动态创建easyui控件的渲染问题

  随着项目中easyui控件的深入使用,有些特定的场景需要从后端动态生成easyui控件到前端,easyui控件自身有套渲染机制,根据定义的class进行客户端渲染。

网上有关于这方面的资料介绍(入口),并提供了easyui渲染部分的源代码,便于更好的了解原理,看到有人回复提出如何使用,结合自己的使用情况,做个简单的记录。

     后端代码如下:

 public static string BuildFilter(int rid)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<table>");
            sb.Append("<tr>");
            //0,显示名称,1字段名称、解析参数
            string strSelect = "{0}:<input id = \"{1}\" class=\"easyui-combobox\" name=\"{1}\"  data-options=\"url:'/Business/Common/PharseHandler.ashx?t={1}', method:'get',  valueField:'ID', textField:'TEXT', panelHeight:'auto'\">";
            string strText = "{0}:<input type='text' name='{1}' id='{1}' />";
            string strDate= "{0}:<input type=\"text\" id=\"{1}\" name=\"{1}\" />";
            DataTable dt = ReportFilterDal.Instance.GetFilterByReportId(rid);
            if (dt.Rows.Count <= 0)
            {
                return "";
            }

            foreach (DataRow r in dt.Rows)
            {
                string strType = r["FieldType"].ToString();
                string strValue = r["FieldValue"].ToString();
                string strName = r["FieldName"].ToString();
                sb.Append("<td>");
                switch (strType)
                {
                    case "T":
                        sb.Append(string.Format(strText, strName, strValue));
                        break;
                    case "S":
                        sb.Append(string.Format(strSelect, strName, strValue));
                        break;
                    case "D":
                        sb.Append(string.Format(strDate, strName, strValue));
                        break;
                }
                sb.Append("</td>");
            }
            sb.Append("<td>");
            sb.Append("<input onclick=\"search()\" type=\"button\" value=\"搜索\" />");
            sb.Append("<input onclick = \"reload()\" type = \"button\" value = \"清空\" />");
            sb.Append("</td>");
            sb.Append("</tr>");
            sb.Append("</table>");
            return sb.ToString();
        }

后端返回的html代码(包含了文本框,下拉框和时间控件):

<table><tr><td>编号:<input type='text' name='jjbno' id='jjbno' /></td><td>客户:<input id = "customer" class="easyui-combobox" name="customer"  data-options="url:'/Business/Common/PharseHandler.ashx?t=customer', method:'get',  valueField:'ID', textField:'TEXT', panelHeight:'auto'"></td><td>开始时间:<input type="text" id="dtStart" name="dtStart" /></td><td>结束时间:<input type="text" id="dtEnd" name="dtEnd" /></td><td><input onclick="search()" type="button" value="搜索" /><input onclick = "reload()" type = "button" value = "清空" /></td></tr></table>

 

前端代码:

 $.ajax({
                type: "get",
                dataType: "html",
                url: actionUrl,
                data: { action: 'dlistTool', keyWord: rId },
                success: function (data) {
                    if (data) {
                        //console.log(data);
                        $("#toolbar").html(data);
                        $('#dtStart,#dtEnd').datebox({ width: 100 });
                        $.parser.parse("#toolbar")//重新渲染,参数为要渲染的容器
                        $('#SqlContent').hide();
                    }
                    else {
                        $("#toolbar").html('');
                        $('#SqlContent').show();
                        BuildGrid(rId);
                    }


                },
                error: function () {
                    alert("加载数据失败,请重试!");
                }
            });

 

posted @ 2016-07-28 11:25  京沙  阅读(2512)  评论(0编辑  收藏  举报