阅读:1986 回复:1
茶语心情
50

帖子

105

跟帖

1837

积分

黄金榴莲
黄金榴莲

[已解决]填写时映射子表单

楼主#
更多 发布于:2017-05-10 17:38

图片:S5T3[KS[4Z0~HP$1R[D$HKO.png


能否支持实现,在请假类型选择,年假的时候。从数据库中把数据捞出来映射进年假这一个列表。关键时通过哪种方式去映射进去?能否通过JS去控制映射
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
1楼#
发布于:2017-05-11 08:30
帖内置顶  –    –  2017-05-16 17:05
可以的,通过ajax的方式取数,下面是官方的子表操作实例
在表单中,控件类型为子表的数据项,其对于的前台代码其实就是Table
下面简单介绍遍历子表的方法
循环子表取、赋值方法:
//此方法的功能是将子表TravelExpensesList复制到子表FinancialAudit中
//步骤解析:
//1、取到子表FinancialAudit的总行数
//2、由于是将子表TravelExpensesList复制到子表FinancialAudit中,也就是子表TravelExpensesList是有值的,而子表FinancialAudit是刚初始化的,没有值,所以在同步值之前需要先要保持两个子表的行数一致,故每次循环需比较行数是否一致
//3、通过行号取到子表TravelExpensesList各列的数据值,并赋值给子表FinancialAudit
function InitFinancialAuditData() {
        //取到FinancialAudit的总行数(JQuery)
            var FinancialAuditLength = $("table[data-datafield='FinancialAudit']").find("tr.rows").length;
        //由于是FinancialAudit向TravelExpensesList同步,所以开始遍历子表TravelExpensesList,取到每行的值再赋值到子表FinancialAudit的对应行中
            $("table[data-datafield='TravelExpensesList']").find("tr.rows").each(function () {
        //获取到子表TravelExpensesList当前遍历的这一行的行号
        //注:一个子表就是一个table,table下面的每个tr、td都有一个属性“data-row”,它是记录当前这个tr、td所在行的行号(就是每行前面的序号)
                var row = $(this).attr("data-row");
        //比较当前获取的行号是否大于FinancialAudit子表的总行数,大于的话,需要FinancialAudit增加一行进行同步,不然即使两个子表的数据同步完毕,也会因为FinancialAudit的行是初始化的1行,导致第2行以及第2行之后的所有数据看不见
        //当然这部分的循环添加行的方法可以用再次优化,也可提到循环外完成
                if (row > FinancialAuditLength) {
            //H3给子表添加行的方法,属于H3封装的方法         
                    $("#Control23").SheetUIManager()._AddRow();
                }
        //同步两张表的数据
        //方法$.MvcSheetUI.SetControlValue("参数1","参数2",参数3);是用来给子表赋值的,针对子表数据;是$.MvcSheetUI.SetControlValue("参数4",参数5);的重载而$.MvcSheetUI.SetControlValue("参数4",参数5);针对的是表单数据
        //$.MvcSheetUI.SetControlValue("参数1","参数2",参数3);参数说明:
        //参数1:对应你需要赋值的子表中的数据项的数据项编码
        //参数2:你需要给这个数据项赋值的值
        //参数3:子表行号
        //方法功能说明:根据你提供的行号和编码(类似于横纵坐标),找到对应子表数据项,进行赋值
        //
        //方法$.MvcSheetUI.GetControlValue("参数1",参数2);是取子表值,针对子表数据;是$.MvcSheetUI.GetControlValue("参数4");的重载而$.MvcSheetUI.SetControlValue("参数4");针对的是表单数据
        //$.MvcSheetUI.SetControlValue("参数1",参数2);参数说明:
        //参数1:对应你需要赋值的子表中的数据项的数据项编码
        //参数2:子表行号
        //方法功能说明:根据你提供的行号和编码(类似于横纵坐标),找到对应子表数据项
                $.MvcSheetUI.SetControlValue("FinancialAudit.Hyperlink", $.MvcSheetUI.GetControlValue("TravelExpensesList.Hyperlink", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.StartPlace", $.MvcSheetUI.GetControlValue("TravelExpensesList.StartPlace", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.StartDate", $.MvcSheetUI.GetControlValue("TravelExpensesList.StartDate", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.Destination", $.MvcSheetUI.GetControlValue("TravelExpensesList.Destination", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.ReturnDate", $.MvcSheetUI.GetControlValue("TravelExpensesList.ReturnDate", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.Days", $.MvcSheetUI.GetControlValue("TravelExpensesList.Days", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.Customer", $.MvcSheetUI.GetControlValue("TravelExpensesList.Days", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.CityType", $.MvcSheetUI.GetControlValue("TravelExpensesList.CityType", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.TotalCost", $.MvcSheetUI.GetControlValue("TravelExpensesList.TotalCost", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.AttachmentNumber", $.MvcSheetUI.GetControlValue("TravelExpensesList.AttachmentNumber", row), row);
                var val = $.MvcSheetUI.GetControlValue("FinancialAudit.CheckMoney", row);
                if (val != null && val != "") {
                }
                else {
                    $.MvcSheetUI.SetControlValue("FinancialAudit.CheckMoney", $.MvcSheetUI.GetControlValue("TravelExpensesList.TotalCost", row), row);
                }
 
            });
        //JQuery方法
        //通过子表数据项编码找到子表FinancialAudit的对应列,给整个列附加上不可编辑的属性
            $("input[data-datafield='FinancialAudit.Hyperlink']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.StartPlace']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.StartDate']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.Destination']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.ReturnDate']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.Days']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.Customer']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.CityType']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.TotalCost']").attr("disabled", "disabled");
            //$("input[data-datafield='FinancialAudit.AttachmentNumber']").attr("disabled", "disabled");
        }
此示例只是针对同步子表这个功能的讲解,希望大家能从这个例子中更加了解子表,并灵活运用
此示例也是较多方式中的其中一种,希望大家也不要局限于此
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
2楼#
发布于:2017-05-11 08:30
可以的,通过ajax的方式取数,下面是官方的子表操作实例
在表单中,控件类型为子表的数据项,其对于的前台代码其实就是Table
下面简单介绍遍历子表的方法
循环子表取、赋值方法:
//此方法的功能是将子表TravelExpensesList复制到子表FinancialAudit中
//步骤解析:
//1、取到子表FinancialAudit的总行数
//2、由于是将子表TravelExpensesList复制到子表FinancialAudit中,也就是子表TravelExpensesList是有值的,而子表FinancialAudit是刚初始化的,没有值,所以在同步值之前需要先要保持两个子表的行数一致,故每次循环需比较行数是否一致
//3、通过行号取到子表TravelExpensesList各列的数据值,并赋值给子表FinancialAudit
function InitFinancialAuditData() {
        //取到FinancialAudit的总行数(JQuery)
            var FinancialAuditLength = $("table[data-datafield='FinancialAudit']").find("tr.rows").length;
        //由于是FinancialAudit向TravelExpensesList同步,所以开始遍历子表TravelExpensesList,取到每行的值再赋值到子表FinancialAudit的对应行中
            $("table[data-datafield='TravelExpensesList']").find("tr.rows").each(function () {
        //获取到子表TravelExpensesList当前遍历的这一行的行号
        //注:一个子表就是一个table,table下面的每个tr、td都有一个属性“data-row”,它是记录当前这个tr、td所在行的行号(就是每行前面的序号)
                var row = $(this).attr("data-row");
        //比较当前获取的行号是否大于FinancialAudit子表的总行数,大于的话,需要FinancialAudit增加一行进行同步,不然即使两个子表的数据同步完毕,也会因为FinancialAudit的行是初始化的1行,导致第2行以及第2行之后的所有数据看不见
        //当然这部分的循环添加行的方法可以用再次优化,也可提到循环外完成
                if (row > FinancialAuditLength) {
            //H3给子表添加行的方法,属于H3封装的方法         
                    $("#Control23").SheetUIManager()._AddRow();
                }
        //同步两张表的数据
        //方法$.MvcSheetUI.SetControlValue("参数1","参数2",参数3);是用来给子表赋值的,针对子表数据;是$.MvcSheetUI.SetControlValue("参数4",参数5);的重载而$.MvcSheetUI.SetControlValue("参数4",参数5);针对的是表单数据
        //$.MvcSheetUI.SetControlValue("参数1","参数2",参数3);参数说明:
        //参数1:对应你需要赋值的子表中的数据项的数据项编码
        //参数2:你需要给这个数据项赋值的值
        //参数3:子表行号
        //方法功能说明:根据你提供的行号和编码(类似于横纵坐标),找到对应子表数据项,进行赋值
        //
        //方法$.MvcSheetUI.GetControlValue("参数1",参数2);是取子表值,针对子表数据;是$.MvcSheetUI.GetControlValue("参数4");的重载而$.MvcSheetUI.SetControlValue("参数4");针对的是表单数据
        //$.MvcSheetUI.SetControlValue("参数1",参数2);参数说明:
        //参数1:对应你需要赋值的子表中的数据项的数据项编码
        //参数2:子表行号
        //方法功能说明:根据你提供的行号和编码(类似于横纵坐标),找到对应子表数据项
                $.MvcSheetUI.SetControlValue("FinancialAudit.Hyperlink", $.MvcSheetUI.GetControlValue("TravelExpensesList.Hyperlink", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.StartPlace", $.MvcSheetUI.GetControlValue("TravelExpensesList.StartPlace", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.StartDate", $.MvcSheetUI.GetControlValue("TravelExpensesList.StartDate", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.Destination", $.MvcSheetUI.GetControlValue("TravelExpensesList.Destination", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.ReturnDate", $.MvcSheetUI.GetControlValue("TravelExpensesList.ReturnDate", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.Days", $.MvcSheetUI.GetControlValue("TravelExpensesList.Days", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.Customer", $.MvcSheetUI.GetControlValue("TravelExpensesList.Days", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.CityType", $.MvcSheetUI.GetControlValue("TravelExpensesList.CityType", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.TotalCost", $.MvcSheetUI.GetControlValue("TravelExpensesList.TotalCost", row), row);
                $.MvcSheetUI.SetControlValue("FinancialAudit.AttachmentNumber", $.MvcSheetUI.GetControlValue("TravelExpensesList.AttachmentNumber", row), row);
                var val = $.MvcSheetUI.GetControlValue("FinancialAudit.CheckMoney", row);
                if (val != null && val != "") {
                }
                else {
                    $.MvcSheetUI.SetControlValue("FinancialAudit.CheckMoney", $.MvcSheetUI.GetControlValue("TravelExpensesList.TotalCost", row), row);
                }
 
            });
        //JQuery方法
        //通过子表数据项编码找到子表FinancialAudit的对应列,给整个列附加上不可编辑的属性
            $("input[data-datafield='FinancialAudit.Hyperlink']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.StartPlace']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.StartDate']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.Destination']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.ReturnDate']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.Days']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.Customer']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.CityType']").attr("disabled", "disabled");
            $("input[data-datafield='FinancialAudit.TotalCost']").attr("disabled", "disabled");
            //$("input[data-datafield='FinancialAudit.AttachmentNumber']").attr("disabled", "disabled");
        }
此示例只是针对同步子表这个功能的讲解,希望大家能从这个例子中更加了解子表,并灵活运用
此示例也是较多方式中的其中一种,希望大家也不要局限于此
游客

返回顶部