treegrid异步加载

<pre class="html" name="code"><body>
    <table id="dg"></table>

    <script>
        $('#dg').treegrid({
            url: '../ashprama/test.ashx',
            idField: 'id',
            treeField: 'DEPATMENT',
            queryParams: {id:"all"},//这里的all只加载第一层数据
            onBeforeExpand: function (row) {
                if (row) {
                    $(this).treegrid('options').url = '../ashprama/test.ashx';
                    //这里不用再加参数,因为默认会post id=treefiedld的值过去,这也是我监听很久后才发现的
                }
            },
            columns: [[
                          { field: 'aaa', width: '30', sortable: 'true', order: 'desc' },
                          { field: 'DEPATMENT', title: '部门', width: '150', sortable: 'true', order: 'desc' },
                          { field: 'USER_NO', title: 'id', width: '70', hidden: 'true', sortable: 'true', order: 'desc' },
                          { field: 'USER_NAME', title: '姓名', width: '70', sortable: 'true', order: 'desc' },
                          { field: 'USER_JOB', title: '职务', width: '150', sortable: 'true', order: 'desc' },
                          { field: 'TEL_OFFICE', title: '办公电话', width: '120', sortable: 'true', order: 'desc' },
                          { field: 'FAX', title: '传真', width: '120', sortable: 'true', order: 'desc' },
                          { field: 'OFFICE_NUB', title: '办公室 ', width: '70', sortable: 'true', order: 'desc' },
                          { field: 'USER_ODERNUM', title: 'num', width: '70', hidden: 'true', sortable: 'true', order: 'desc' },
                          { field: 'TEL_MOB', title: '手机号码', width: '120', sortable: 'true', order: 'desc' },
                          {
                              field: 'dongxiru', title: '编辑', width: '60', sortable: 'true', order: 'desc', formatter: function (value, row) {
                                  if (row.USER_NAME != "") {
                                      return '<a  οnclick="telabc(\'' + row.USER_NAME + '\',\'' + row.DEPATMENT + '\')" href="javascript:void(0)">编辑</a>';

                                  }
                              }
                          }]],
        });
    </script>
</body>

 
</pre><pre class="html" name="code" snippet_file_name="blog_20150505_3_4970237" code_snippet_id="659731">注意第一次加载与第二次加载返回的数据格式不一样,异步加载首次加载时必须设state为closed 点击加载返回的数据格式为[{},{}],不再需要使用到_parentid,首次加载格式为{total:11,rows:[{},{}]}
<pre class="csharp" name="code">using Oracle.DataAccess.Client;
using System;
using System.Collections.Generic;
using System.Web;
using gxqgsdz.dataprama;
using System.Data;
using System.Web.SessionState;

namespace gxqgsdz.ashprama
{
    /// <summary>
    /// tel_for_deplay 的摘要说明
    /// </summary>
    public class tel_for_deplay : IHttpHandler, IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
           string actionstr = context.Request["action"];
             string mm="";
            string sid = context.Request["id"];
            string strid = "";
            if (sid == "all")
            {
                mm = "[";
                OracleParameter[] pan = { };
                DataTable dt = new DataTable();
                dt = qg_comm.getcommdata(1, 0, "qg_dept", "t.*", "deptparent is null", "t.deptno ASC");
                if (dt.Rows.Count != 0)
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        strid = dt.Rows[i]["deptid"].ToString();
                        mm = mm + "{\"id\":\"" + strid + "\",\"USER_NO\":\"\",\"state\":\"closed\",\"USER_NAME\":\"\",\"USER_JOB\":\"\",\"TEL_OFFICE\":\"\",\"FAX\":\"\",\"TEL_MOB\":\"\",\"OFFICE_NUB\":\"\",\"USER_ODERNUM\":\"\",\"DEPATMENT\":\"" + dt.Rows[i]["deptname"].ToString() + "\"},";
                        if (getdepttojson(dt.Rows[i]["deptid"].ToString()) != "")
                       {
                           mm = mm  + getdepttojson(dt.Rows[i]["deptid"].ToString()) + ",";//有下一级加载部门
                       }
                    }
                mm = mm.Substring(0, mm.Length - 1);
                mm = mm + "]";
                mm = "{\"total\":307,\"rows\":" + mm + "}";

            }
            if (sid != "all")
            {
                mm ="["+ getempyeetojson(sid)+"]";
            }
             context.Response.Write(mm);
           

        private static string getdepttojson(string dept)//dept为id 不是部门名
        {
            string deptsub = "";
            DataTable ds = new DataTable();
            ds = qg_comm.getcommdata(1, 0, "qg_dept", "t.*", "deptparent='" + dept + "'", "t.deptno desc");
            if (ds.Rows.Count != 0)
            {
                for (int i = 0; i < ds.Rows.Count; i++)
                {
                    deptsub = deptsub + "{\"id\":\"" + ds.Rows[i]["deptid"].ToString() + "\",\"USER_NO\":\"\",\"state\":\"closed\",\"_parentId\":\"" + dept + "\",\"USER_NAME\":\"\",\"USER_JOB\":\"\",\"TEL_OFFICE\":\"\",\"FAX\":\"\",\"TEL_MOB\":\"\",\"OFFICE_NUB\":\"\",\"USER_ODERNUM\":\"\",\"DEPATMENT\":\"" + ds.Rows[i]["deptname"].ToString() + "\"},";
                }
                deptsub = deptsub.Substring(0, deptsub.Length - 1);
            }
            return deptsub;

        }



        private static string getempyeetojson(string dept)
        {
            DataTable ds = new DataTable();
            string strJson = "";
            ds = qg_comm.getcommdata(1, 0, "qg_emplyee", "t.USER_NO,t.USER_NAME,t.USER_JOB,t.TEL_OFFICE,t.FAX,t.TEL_MOB,t.OFFICE_NUB,t.USER_ODERNUM,t.DEPATMENT", "depatment='" + dept + "'", "t.user_odernum ASC");
            if (ds.Rows.Count != 0)
            {
                for (int i = 0; i < ds.Rows.Count; i++)
                {
                    strJson = strJson + "{\"id\":\""+ ds.Rows[i]["user_no"].ToString() +"\",\"USER_NO\":\"" + ds.Rows[i]["user_no"].ToString() + "\",\"USER_NAME\":\"" + ds.Rows[i]["user_name"].ToString() + "\",\"USER_JOB\":\"" + ds.Rows[i]["user_job"].ToString() + "\",";
                    strJson = strJson + " \"TEL_OFFICE\":\"" + ds.Rows[i]["tel_office"].ToString() + "\",\"FAX\":\"" + ds.Rows[i]["fax"].ToString() + "\",\"TEL_MOB\":\"" + ds.Rows[i]["tel_mob"].ToString() + "\",\"OFFICE_NUB\":\"" + ds.Rows[i]["office_nub"].ToString() + "\",";
                    strJson = strJson + " \"USER_ODERNUM\":\"" + ds.Rows[i]["user_odernum"].ToString() + "\",\"DEPATMENT\":\"" + dept + "\"},";
                 
                }
                strJson = strJson.Substring(0, strJson.Length - 1);
            }
            return strJson;

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

 


如果要在jsp easyui treegrid中进行异步加载,需要在treegrid的配置中设置url参数,该参数指向服务器端的数据源。同时,还需要在服务器端编写相应的代码,用于处理treegrid的数据请求,并返回相应的数据。 具体实现步骤如下: 1. 在jsp页面中定义treegrid,设置其url参数指向服务器端的数据源: ``` <table id="treegrid" class="easyui-treegrid" data-options="url:'treegrid_data.jsp'"> ``` 2. 在服务器端编写treegrid_data.jsp页面,用于处理treegrid的数据请求并返回相应的数据: ``` <% // 获取请求参数 String id = request.getParameter("id"); // 根据请求参数查询数据并返回 // ... // 返回数据 response.setContentType("text/html;charset=utf-8"); response.getWriter().write(data); %> ``` 其中,id参数表示treegrid节点的id,用于从服务器端获取相应的子节点数据。在服务器端,根据id参数查询相应的子节点数据,并将数据以JSON格式返回。 3. 在treegrid_data.jsp页面中使用JSON格式返回数据,例如: ``` [ {"id":1, "name":"node1", "state":"closed"}, {"id":2, "name":"node2", "state":"closed", "children":[ {"id":3, "name":"node3"}, {"id":4, "name":"node4"} ]} ] ``` 其中,每个节点的数据格式为{id:节点id, name:节点名称, state:节点状态, children:子节点数组}。state参数表示节点的展开状态,closed表示节点为闭合状态,可以展开;open表示节点为展开状态,可以闭合。children参数表示子节点数组,可以递归定义treegrid的层次结构。 4. 在treegrid的配置中设置loadFilter参数,用于对从服务器端返回的数据进行过滤和处理,例如: ``` <table id="treegrid" class="easyui-treegrid" data-options=" url:'treegrid_data.jsp', loadFilter:function(data){ // 对返回的数据进行过滤和处理 // ... // 返回处理后的数据 return data; } "> ``` loadFilter参数是一个函数,用于对从服务器端返回的数据进行过滤和处理,可以对节点数据进行转换、排序、过滤等操作,最终返回处理后的数据。在loadFilter函数中,可以使用一些内置的函数,例如sort、filter等,用于对节点数据进行排序和过滤。 以上就是在jsp easyui treegrid中进行异步加载的基本实现步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值