介绍在BC中常用的事件及触发条件。如想在数量变化时计算总价则可以在字段变化时的事件里做代码处理。
OnCalculate OnRecordChange OnBeforeInsert OnAfterInsert OnFieldChange OnLoad BeforeFieldChange OnAfterFieldChange
OnBeforeDelete OnAfterDelete OnRecordOwner LoadChildData OnActorFieldChange BeforeGetData AfterGetData
所有事件均可在JSCRIPT业务初始化处注册。

注意:
在事件里不能调用会触发该事件的函数,否则会引起死循环。例如在OnCalculate事件里不能使用setFieldValue函数,因为setFieldValue函数会触发OnCalculate事件,从而引起死循环,如果想在事件里给字段赋值则使用不触发事件的setFieldValueEx函数给字段赋值。
lOnCalculate
当BC上的字段值发生改变时触发事件,可在BC的OnCalculate()标签处直接写事件内处理的代码,无需注册。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailBase.on("OnCalculate",function(e){
//e.fieldName 字段名称 e.value 字段发生变化后的值 e.oldvalue 字段发生变化前的值
//自动计算商品总价:总价=单价*数量
//获取单价字段填写的值
var price = BC_totalsTableBase.getFieldValue("prices");
//获取数量字段填写的值
var number = BC_totalsTableBase.getFieldValue("numbers");
//统计总价公式
var total = price*number;
//给总价字段赋值
BC_totalsTableBase.setFieldValueEx("totals",total);
});lOnRecordChange
记录指针变化时触发(表格记录行从某一行移动到其他行或对数据新增或删除时触发),可在BC的OnRecordChange()标签处直接写事件内处理的代码,无需注册。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailBase.on("OnRecordChange",function(){
//获取汇总字段值
var index=BC_totalsTableBase.getRecordIndex();
alert("你所点击的行索引为:"+index);
});lOnBeforeInsert
在插入新的数据之前触发,可在BC的OnBeforeInsert()标签处直接写事件内处理的代码,无需注册。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailBase.on("OnBeforeInsert",function(){
var count = BC_totalsTableBase.getRecordCount();
alert("新增数据之前记录数为:"+count);
});lOnAfterInsert
在插入新的数据之后触发,可在BC的OnAfterInsert()标签处直接写事件内处理的代码,无需注册。
JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailBase.on("OnAfterInsert",function(){
//给单价赋一个初始值
var price = BC_totalsTableBase.setFieldValue("prices",1);
//给数量赋一个初始值
var number = BC_totalsTableBase.setFieldValue("numbers",2);
//此时会自动触发OnCalculate中的计算总价并赋值
});lOnFieldChange
当BC上的字段值发生改变触发。
1、在BC列信息字段下的OnFieldChange()标签处直接写代码代表该字段发生变化时执行OnFieldChange标签里的代码。

2、在JSCRIPT业务初始化注册事件OnFieldChange事件,任何字段发生改变都会触发该事件。如果想某个字段值发生改变时执行代码,则在事件绑定方法里根据字段名做判断。
示例:
BC_SOSH_SHDDTLBase.on("OnFieldChange",function(e){
//参数e.fieldName当前变化字段名,e.value字段变化后的值,e.oldvalue字段变化前的值
if(e.fieldName=="PlanSendDT"){
if(e.value!=e.oldvalue){
if(confirm("更改计划上门日期将清空明细数据,确定继续吗?")){
BC_SOSH_SHDDTLBase.DeleteAll();
}else{
BC_SOSH_SHDBase.setFieldValueEx('PlanSendDT',e.oldvalue);
return false;
}
}
}
});lOnLoad
数据读到前段,填充到VC以后触发,可在BC组件事件处添加OnLoad事件响应。

JSCRIPT数据装载前注册事件示例:
BC_GoodsDetailListBase.on("OnLoad",function(data){
//data为BC加载的数据数组
alert(data.length);
alert(data[0][0]); //第一行第一列的值
});lBeforeFieldChange
修改字段值前触发,可在BC组件事件处添加BeforeFieldChange事件响应。

JSCRIPT业务初始化注册事件示例:
BC_SOSH_SHDDTLBase.on("BeforeFieldChange",function(e){
//参数e.fieldName当前变化字段名,e.value字段变化后的值,e.oldvalue字段变化前的值
if(e.fieldName=="PlanSendDT"){
if(e.value!=e.oldvalue){
if(confirm("更改计划上门日期将清空明细数据,确定继续吗?")){
BC_SOSH_SHDDTLBase.DeleteAll();
}else{
BC_SOSH_SHDBase.setFieldValueEx('PlanSendDT',e.oldvalue);
return false;
}
}
}
});lOnAfterFieldChange
修改字段值后触发,可在BC组件事件处添加OnAfterFieldChange事件响应。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailListBase.on("OnAfterFieldChange",function(e){
var fieldName=e.fieldName; //字段名称
var oldvalue=e.oldvalue; //修改前的值
var values= e.value ; //修改后的值
alert("修改字段值后触发\n\n字段名称:"+fieldName+"\n修改前的值:"+oldvalue+"\n修改后的值:"+values);
});lOnBeforeDelete
删除字段值前触发,可在BC组件事件处添加OnBeforeDelete事件响应。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailListBase.on("OnBeforeDelete",function(OID){
//OID为删除记录的主键OID
});lOnAfterDelete
删除字段值后触发,可在BC组件事件处添加OnAfterDelete事件响应。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailListBase.on("OnAfterDelete",function(OID){
//OID为删除记录的主键OID
});lOnRecordOwner
修改当前记录数据前,可在BC组件事件处添加OnRecordOwner事件响应。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailListBase.on("OnRecordOwner",function(e){
//编码判断有无修改权限,设置e.result=false;不可修改记录,设置e.result=true;可修改记录。
e.result=false;
});lLoadChildData
读取子表数据时,可在BC组件事件处添加LoadChildData事件响应。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailListBase.on("LoadChildData",function(e){
});lOnActorFieldChange
当链接小窗口选中字段传值时触发,可在BC组件事件处添加OnActorFieldChange事件响应。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailListBase.on("OnActorFieldChange",function(e){
//e.destFieldName目前变化字段序列,e.srcFieldName 源字段序列
});lBeforeGetData
查询数据前触发,可在BC组件事件处添加BeforeGetData事件响应。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailListBase.on("BeforeGetData",function(){
});lAfterGetData
查询数据后触发(例如查询漏斗、getData函数、查询VC、排序、翻页、高级查询等),可在BC组件事件处添加AfterGetData事件响应。

JSCRIPT业务初始化注册事件示例:
BC_GoodsDetailListBase.on("AfterGetData",function(){
});
评论
暂无评论!