新方式添加表格监听,解决扩展脚本添加的监听无法移除的问题
新方式添加表格监听,解决扩展脚本添加的监听无法移除的问题,目的是跳过methodName参数
最近和部门大神在调试的时候,发现一个神奇的现象。使用脚本给一个表格增加了监听,脚本如下:
pluginCtx.getKDTable("kdtEntrys").addKDTEditListener(function(event,methodName){
if(methodName == "editStopped")
{
com.kingdee.eas.util.client.MsgBox.showInfo("$$$$$EditStopped");
}
});
然后业务代码中在提交后有移除表格监听的动作。居然报错了,
var obj = {
editStarting : function (e)
{
com.kingdee.eas.util.client.MsgBox.showInfo("editStarting");
} ,
editStarted : function (e)
{
com.kingdee.eas.util.client.MsgBox.showInfo("editStarted");
} ,
editValueChanged : function (e)
{
com.kingdee.eas.util.client.MsgBox.showInfo("editValueChanged");
} ,
editStopping : function (e)
{
com.kingdee.eas.util.client.MsgBox.showInfo("editStopping");
} ,
editStopped : function (e)
{
com.kingdee.eas.util.client.MsgBox.showInfo("editStopped");
} ,
editCanceled : function (e)
{
com.kingdee.eas.util.client.MsgBox.showInfo("editCanceled");
}
} ;
kdtable.addKDTEditListener( new com.kingdee.bos.ctrl.kdf.table.event.KDTEditListener(obj));
使用DEP给采购入库单的分录物料编码F7增加值改变监听时,使用Dep提供的表格表格编辑监听事件方式进行业务逻辑处理,通过F7物料编码值改变,查询并携带给物料新增F7的值填充到采购入库单分录的字符串字段中。
注意:因为使用表格值改变事件(table.addKDTPropertyChangeListener(function(event,methodName)
),保存单据时,出现了点击保存按钮无任何反应,但客户端日志中会提示 去掉表格监听事件出错。此问题未解决,因此,采用上面的事件方式进行监听。
var easImporter = JavaImporter(); easImporter.importPackage(Packages.com.kingdee.bos.dao.query); easImporter.importPackage(Packages.com.kingdee.eas.util.client); easImporter.importPackage(Packages.com.kingdee.eas.basedata.master.material); with(easImporter){ var table = pluginCtx.getKDTable("detailTable"); var obj = { editStopped : function (e) { com.kingdee.eas.util.client.MsgBox.showInfo("editStopped"); var row = e.getRowIndex(); var col = e.getColIndex(); if(col==2){ // 获取物料编码F7的MaterialInfo var material = table.getRow(row).getCell("materialNum").getValue(); var sql = "select material.fname_l2 as mName,cp.fname_l2 as cpName, bizType.fname_l2 as btName, levy.fname_l2 as leName from T_BD_Material material left join CT_CUS_Levy levy on levy.fid = material.cflevyid left join CT_CUS_CarPrice cp on cp.fid = material.cfcarpriceid left join CT_CUS_BizType bizType on bizType.fid = material.cfbiztypeid where material.fid = '"+ material.getId()+"'"; var se = new SQLExecutor(sql); var rs = se.executeSQL(); var leName = "",cpName = "",btName = ""; while(rs.next()){ // 税款 if(rs.getString("leName") != null){ leName = rs.getString("leName").toString(); } // 车款 if(rs.getString("cpName") != null){ cpName = rs.getString("cpName").toString(); } // 业务类型 if(rs.getString("btName") != null){ btName = rs.getString("btName").toString(); } } //给kdtable 测试单元格赋值 table.getRow(row).getCell("levy").setValue(leName); table.getRow(row).getCell("carPrice").setValue(cpName); table.getRow(row).getCell("bizType").setValue(btName); } } }; table.addKDTEditListener( new com.kingdee.bos.ctrl.kdf.table.event.KDTEditListener(obj)); }