在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需要和后台定义的对象的属性名称保持一致

                        }

});

  });

};