注意:代码仅在APEX18.1中测试过
案例说明:通过监听IG IDNUM列改变,自动填充BIRTH列值
运行说明:将代码拷贝到IG所在页面,放入页面“加载时执行”,修改IG静态ID,以及其他信息,保存后运行。
案例代码:
(function(apex,debug){
var
// IG插件静态ID
// IG static id
igId='customerList',
// IG插件实例
// IG instance
ig=apex.region(igId).widget(),
// IG视图层实例
// IG view
vw=ig.interactiveGrid('getViews'),
// IG模型实例
// IG model
md=vw.grid.model,
// IG模型变更事件回调
// IG change notification callback
mdChg=function(chgType,chg) {
switch(chgType) {
case 'set':
// IDNUM列改变
// if IDNUM column changed
if(chg.field === 'IDNUM') {
// BIRTH列已有值
// if birth column value exists ignore
if(md.getValue(chg.record,'BIRTH')) {
return;
}
var
// get editing row record or else chg.record
rec = md.getRecord(chg.recordId),
// 取新值
// get idnum column new value
// chg.oldval get old value
pin = md.getValue(rec,'IDNUM'),
// 设置BIRTH列的返回值,SET:设置成功,NC:数据无改变,DUP:recordId重复
// Set birth column value and assign return value to ret variable
// possible return values are: SET, NC, DUP
// SET: set success
// NC: set failed, value not change
// DUP: set failed, record id duplicated
ret = md.setValue(rec,'BIRTH',[pin.substring(6,10),pin.substring(10,12),pin.substring(12,14)].join('-'));
// 设置成功
// set BIRTH column value success
if(ret === 'SET') {
// 用setData刷新view行,不然view不会刷新:(
// setData必须传数组
// call model setData method to refresh view row else view will not get refreshed.
// setValue don't refresh view, why?
md.setData([rec], md.indexOf(rec));
}
}
break;
default:
// console.info('SET ' + chg.field);
break;
}
};
// 注册变更事件回调,详见#IMAGE_PREFIX/libraries/apex/model.js
// register change notifications callback, see:#IMAGE_PREFIX/libraries/apex/model.js
md.subscribe({onChange:mdChg});
})(apex,apex.debug);