在BPM项目中,前后台交互功能很常见,实现的方式也有很多种
这个TXT里面介绍的就是H3封装的Action的用法
//Loaded是H3封装的前台加载事件
$.MvcSheet.Loaded = function (sheetInfo) {
//$.MvcSheetUI.GetElement("参数1").change(function (){});方法解析:
//此方法是H3中封装的自定义的change方法,针对H3中的绝大多数控件
//参数1:改变后触发change方法的数据项的编码
//方法前提:此方法需要写在Loaded事件中,不然脚本会报错“未定义change()方法”
//下例中,该方法的功能是,当数据项编码为UserId的数据项改变是,进行前后台交互,读出对应的code和name并赋值给表单数据项
$.MvcSheetUI.GetElement("UserId").change(function (){
//注意事项:
//1、$.MvcSheet.Action中的Data是传入后台的数据值,当是多个值的时候,以英文","隔开,","是在双引号后面的如:Datas: ["{UserId}","{Day}"],
//2、前台通过Data向后台传入数据值,后台的对应方法需要定义参数列表去接收,参数列表的类型和个数需与Data中传入参数的类型和个数一一对应且顺序不能错乱
//3、前后台参数交互类型对应规则
//前台传入数据的控件类型 后台接收的变量类型
//日期类型控件 -> string(字符串)
//参与者(单人) -> string(字符串)
//参与者(多人) -> string[](字符串数组)
//短文本/长文本 -> string(字符串)
//审批意见/附件 -> string(字符串)
//整数 -> int/long/string
//长整数 -> long/string
//数值 -> float/double/string
$.MvcSheet.Action({
Action: "TestAction", // 调用的后台方法名称
Datas: ["{UserId}"], // 输入参数,格式 ["{数据项名称}","String值","控件ID"],当包含数据项名称时 LoadControlValue必须为true
LoadControlValue: true, // 是否获取表单数据
PostSheetInfo: false, // 是否获取已经改变的表单数据
OnActionDone: function (e) {
//"e"是用来接收方法"TestAction"的反回值(return的值),从下面代码可以看出,TestAction方法返回的是一个对象
//1、后台方法可以是有返回值的,也可以是无返回值
//2、返回值类型可以是对象、int、string、数组、集合等
//3、我们推荐的是返回对象,这样的话可以避免些系统bug
// 执行完成后回调事件
$.MvcSheetUI.SetControlValue("code", e.Code); //Code是返回对象e的一个属性,且Code需要和后台定义的对象的属性名称保持一致
$.MvcSheetUI.SetControlValue("mvcName", e.Name); //Name是返回对象e的一个属性,且Name需要和后台定义的对象的属性名称保持一致
}
});
});
};
本文转自 lwl_BPM 51CTO博客,原文链接:http://blog.51cto.com/12438115/1939881,如需转载请自行联系原作者