子表单初始化加载列表信息

 后端代码

 protected override void OnSubmit(string actionName, H3.SmartForm.SmartFormPostValue postValue, H3.SmartForm.SubmitSmartFormResponse response)
    {

        //初始化加载24大类
        if(actionName == "initTarget") 
        {
            try 
            {
                H3.SmartForm.SmartFormRequest request = this.Request;//取出当前请求对象
                H3.IEngine engine = request.Engine;//取出引擎实例

                // //获取当前登录人的人员Id(只能在表单设计后端类、列表设计后端类中获取)
                // string currentUserId = this.Request.UserContext.UserId;

                //本sql中@name即参数名,与H3.Data.Database.Parameter参数对象一一对应
                string sql = "SELECT * FROM i_D1198022e2e77ed14b84c05ac058937cf8364c4 WHERE F0000018 = '成本预算';";
                //定义参数集合
                List < H3.Data.Database.Parameter > parameters = new List<H3.Data.Database.Parameter>();
                // H3.Data.Database.Parameter param = new H3.Data.Database.Parameter(
                //     "@currentUserId", //参数名
                //     System.Data.DbType.String, //参数值类型
                //     currentUserId //参数值    
                // );
                // parameters.Add(param);
                System.Data.DataTable dt = this.Engine.Query.QueryTable(sql, parameters.ToArray());
                //定义要响应给前端的产品数据集合
                List < Dictionary < string, object >> proDataList = new List<Dictionary<string, object>>();
                if(dt != null && dt.Rows.Count > 0)
                {
                    //循环处理查询结果
                    foreach(System.Data.DataRow row in dt.Rows) 
                    {
                        //将每一条产品数据 转换成一个 Dictionary < string, object > 类型实例
                        //Dictionary < string, object >是个字典,可以自定义Key,所以这里将F000000X这种无意义的控件编码,转换成了更方便前端使用的 proId、proName 等名称
                        Dictionary < string, object > proData = new Dictionary<string, object>();
                        proData["objId"] = row["ObjectId"].ToString();//目标表实例ID
                        proData["F0000023"] = row["F0000023"].ToString();//成本十二类
                        proData["F0000030"] = row["F0000030"].ToString();//审批类型
                        proData["F0000011"] = row["F0000011"].ToString();//分类名称
                        //将本条数据添加到list集合中
                        proDataList.Add(proData);
                    }
                }
                //初始化响应数据实例(因为response.ReturnData默认值是null,后续要添加响应数据,必须先实例化)
                response.ReturnData = new Dictionary<string, object>();
                //将 所有产品数据的list集合 添加到响应数据实例中
                response.ReturnData.Add("proDataList", proDataList);
            } catch(Exception ex)
            {
                //将 try 中抛出的异常捕获,转换成 response.Errors 响应给前端
                response.Errors.Add(ex.Message);
            }
        }

        base.OnSubmit(actionName, postValue, response);
    }

前端代码

    OnLoad: function() {
        console.log( "页面页面正在加载中" );
        //由于会在回调函数里用到this,而回调函数内直接用this会导致指向错误,所以要在此处先用一个变量存储
        var that = this;
        //判断当前是否处于表单新增模式下
        //新增或者//打开草稿数据 
        if( $.SmartForm.ResponseContext.IsCreateMode || $.SmartForm.ResponseContext.BizObjectStatus == 0 ) {
            //获取子表控件实例
            var proCon = that.D148208e1ddfcef81dc44389ece468edb9d2cb9;
            //先调用ClearRows函数,清空子表所有行
            proCon.ClearRows();

            //Post请求后端,因为是查全部数据,所以无需传参数到后端
            $.SmartForm.PostForm( "initTarget", {}, function( data ) {
                if( data.Errors && data.Errors.length ) {
                    $.IShowError( "错误", JSON.stringify( data.Errors ) );
                } else {
                    var result = data.ReturnData;

                    //此处先判断后端是否有返回 proDataList 集合,以及 proDataList 集合内元素个数是否 > 0
                    if( result && result[ "proDataList" ] && result[ "proDataList" ].length ) {
                        //循环list结果
                        for( var i = 0;i < result[ "proDataList" ].length;i++ ) {
                            //拿出本条数据
                            var proData = result[ "proDataList" ][ i ];

                            //将 产品信息 填充到子表
                            proCon.AddRow( $.IGuid(), {
                                "D148208e1ddfcef81dc44389ece468edb9d2cb9.F0000075": proData[ "objId" ],//关联目标
                            });
                        }
                    }
                }
            }, function( error ) {
                $.IShowError( "错误", JSON.stringify( error ) );
            },
                true //true:不阻塞,false:请求过程中阻塞后续代码执行
            );
        }
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值