• Easyui datagrid+ashx 实现动态生成列


    easyui datagrid查询时需要动态生成列,网上收集了一些资料,最终实现和大家分享一下:

    JS脚本:

    var grid; 
      
     $(function(){ 
      
         grid = $('#tt').datagrid({ 
             fit: true,//自动大小    
             rownumbers:true,//行号   
             //loadMsg:'数据装载中......',    
             singleSelect:true,//单行选取  
             pagination:false,//显示分页  
             columns:[[]], 
             toolbar:[{ 
                 text:'显示1', 
                 iconCls:'icon-add', 
                 handler:newData 
             },'-',{ 
                 text:'显示2', 
                 iconCls:'icon-add', 
                 handler:newData2 
             }] 
         }); 
      
         self.parent.$("#tabs").tabs("loaded"); 
     }); 
      
     function newData(){ 
      
         $.post('ashx/freeBedHandler.ashx', { id:1 },  
             function(data) { 
                 grid.datagrid({ 
                     columns:[data.columns] 
                 }).datagrid("loadData", data);                
             }, 'json'); 
     } 
      
     function newData2(){ 
      
         $.post('ashx/freeBedHandler.ashx', { id:2},  
             function(data) { 
                 grid.datagrid({ 
                     columns:[data.columns] 
                 }).datagrid("loadData", data);                
             }, 'json'); 
     } 
    
    var grid;
    
    $(function(){
    
     grid = $('#tt').datagrid({
       fit: true,//自动大小 
             rownumbers:true,//行号
      //loadMsg:'数据装载中......', 
       singleSelect:true,//单行选取
      pagination:false,//显示分页
      columns:[[]],
       toolbar:[{
        text:'显示1',
        iconCls:'icon-add',
        handler:newData
       },'-',{
        text:'显示2',
        iconCls:'icon-add',
        handler:newData2
       }]
      });
    
     self.parent.$("#tabs").tabs("loaded");
     });
    
    function newData(){
    
     $.post('ashx/freeBedHandler.ashx', { id:1 },
          function(data) {
              grid.datagrid({
                     columns:[data.columns]
                 }).datagrid("loadData", data);              
             }, 'json');
     }
    
    function newData2(){
    
     $.post('ashx/freeBedHandler.ashx', { id:2},
          function(data) {
              grid.datagrid({
                     columns:[data.columns]
                 }).datagrid("loadData", data);              
             }, 'json');
     }
    View Code

    ahsx代码:

    <%@ WebHandler Language="C#" Class="freeBedHandler" %> 
      
     using System; 
     using System.Web; 
     using System.Text; 
     using System.Data; 
     using System.Web.UI.WebControls; 
     using System.Web.SessionState; 
     using Newtonsoft.Json; 
     using Newtonsoft.Json.Converters; 
     using System.Collections; 
      
     public class freeBedHandler : IHttpHandler { 
          
         public void ProcessRequest (HttpContext context) {//示例用,各位可以根据自己需求写  
      
             var id = context.Request["id"]; 
             if (id.ToString().Equals("1")) 
             { 
                 DataTable dt = createTable(); 
      
                 DataRow dr = dt.NewRow(); 
                 dr["field"] = "building_id"; 
                 dr["title"] = "公寓编号"; 
                 dr["align"] = "center"; 
                 dr["width"] = 100; 
                 dt.Rows.Add(dr); 
      
                 dr = dt.NewRow(); 
                 dr["field"] = "building_name"; 
                 dr["title"] = "公寓名称"; 
                 dr["align"] = "center"; 
                 dr["width"] = 100; 
                 dt.Rows.Add(dr); 
      
                 dr = dt.NewRow(); 
                 dr["field"] = "building_info"; 
                 dr["title"] = "公寓信息"; 
                 dr["align"] = "center"; 
                 dr["width"] = 100; 
                 dt.Rows.Add(dr); 
      
                 dr = dt.NewRow(); 
                 dr["field"] = "school_area"; 
                 dr["title"] = "所在校区"; 
                 dr["align"] = "center"; 
                 dr["width"] = 100; 
                 dt.Rows.Add(dr); 
      
                 string sql = "select building_id,building_name,building_info,school_area from building"; 
                 string countsql = "select count(*) from building"; 
                 int count = DBHelper.GetScalar(countsql); 
                 DataTable dtt = DBHelper.GetDataSet(sql); 
      
                 Hashtable ht = new Hashtable(); 
                 ht.Add("total", count); 
                 ht.Add("columns", dt); 
                 ht.Add("rows", dtt); 
                 string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(ht); 
      
      
                 context.Response.Clear(); 
                 context.Response.ContentEncoding = Encoding.UTF8; 
                 context.Response.ContentType = "application/json"; 
                 context.Response.Write(strJson); 
                 context.Response.Flush(); 
                 context.Response.End(); 
             } 
             else 
             { 
                 DataTable dt = createTable(); 
      
                 DataRow dr = dt.NewRow(); 
                 dr["field"] = "building_id"; 
                 dr["title"] = "公寓编号"; 
                 dr["align"] = "center"; 
                 dr["width"] = 100; 
                 dt.Rows.Add(dr); 
      
                 dr = dt.NewRow(); 
                 dr["field"] = "building_name"; 
                 dr["title"] = "公寓名称"; 
                 dr["align"] = "center"; 
                 dr["width"] = 100; 
                 dt.Rows.Add(dr); 
      
                 dr = dt.NewRow(); 
                 dr["field"] = "school_area"; 
                 dr["title"] = "所在校区"; 
                 dr["align"] = "center"; 
                 dr["width"] = 100; 
                 dt.Rows.Add(dr); 
      
                 string sql = "select building_id,building_name,school_area from building"; 
                 string countsql = "select count(*) from building"; 
                 int count = DBHelper.GetScalar(countsql); 
                 DataTable dtt = DBHelper.GetDataSet(sql); 
              
      
                 Hashtable ht = new Hashtable(); 
                 ht.Add("total", count); 
                 ht.Add("columns", dt); 
                 ht.Add("rows", dtt); 
                 string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(ht); 
      
      
                 context.Response.Clear(); 
                 context.Response.ContentEncoding = Encoding.UTF8; 
                 context.Response.ContentType = "application/json"; 
                 context.Response.Write(strJson); 
                 context.Response.Flush(); 
                 context.Response.End(); 
             } 
              
         } 
      
         public DataTable createTable() 
         { 
      
             DataTable dt = new DataTable("myTable"); 
      
             //field列  
             DataColumn columnField = new DataColumn();//创建一列  
             columnField.DataType = System.Type.GetType("System.String");//数据类型  
             columnField.ColumnName = "field";//列名  
             dt.Columns.Add(columnField);//添加到table  
             //title列  
             DataColumn columnTitle = new DataColumn(); 
             columnTitle.DataType = System.Type.GetType("System.String"); 
             columnTitle.ColumnName = "title"; 
             dt.Columns.Add(columnTitle); 
             //align列  
             DataColumn columnAlign = new DataColumn(); 
             columnAlign.DataType = System.Type.GetType("System.String"); 
             columnAlign.ColumnName = "align"; 
             dt.Columns.Add(columnAlign); 
             //width列  
             DataColumn columnWidth = new DataColumn(); 
             columnWidth.DataType = System.Type.GetType("System.Int32"); 
             columnWidth.ColumnName = "width"; 
             dt.Columns.Add(columnWidth); 
      
             return dt; 
         } 
          
         public bool IsReusable { 
             get { 
                 return false; 
             } 
         } 
      
     }
    View Code
    <%@ WebHandler Language="C#" Class="freeBedHandler" %>
    
    using System;
     using System.Web;
     using System.Text;
     using System.Data;
     using System.Web.UI.WebControls;
     using System.Web.SessionState;
     using Newtonsoft.Json;
     using Newtonsoft.Json.Converters;
     using System.Collections;
    
    public class freeBedHandler : IHttpHandler {
        
         public void ProcessRequest (HttpContext context) {//示例用,各位可以根据自己需求写
    
            var id = context.Request["id"];
             if (id.ToString().Equals("1"))
             {
                 DataTable dt = createTable();
    
                DataRow dr = dt.NewRow();
                 dr["field"] = "building_id";
                 dr["title"] = "公寓编号";
                 dr["align"] = "center";
                 dr["width"] = 100;
                 dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                 dr["field"] = "building_name";
                 dr["title"] = "公寓名称";
                 dr["align"] = "center";
                 dr["width"] = 100;
                 dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                 dr["field"] = "building_info";
                 dr["title"] = "公寓信息";
                 dr["align"] = "center";
                 dr["width"] = 100;
                 dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                 dr["field"] = "school_area";
                 dr["title"] = "所在校区";
                 dr["align"] = "center";
                 dr["width"] = 100;
                 dt.Rows.Add(dr);
    
                string sql = "select building_id,building_name,building_info,school_area from building";
                 string countsql = "select count(*) from building";
                 int count = DBHelper.GetScalar(countsql);
                 DataTable dtt = DBHelper.GetDataSet(sql);
    
                Hashtable ht = new Hashtable();
                 ht.Add("total", count);
                 ht.Add("columns", dt);
                 ht.Add("rows", dtt);
                 string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(ht);
    
    
                 context.Response.Clear();
                 context.Response.ContentEncoding = Encoding.UTF8;
                 context.Response.ContentType = "application/json";
                 context.Response.Write(strJson);
                 context.Response.Flush();
                 context.Response.End();
             }
             else
             {
                 DataTable dt = createTable();
    
                DataRow dr = dt.NewRow();
                 dr["field"] = "building_id";
                 dr["title"] = "公寓编号";
                 dr["align"] = "center";
                 dr["width"] = 100;
                 dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                 dr["field"] = "building_name";
                 dr["title"] = "公寓名称";
                 dr["align"] = "center";
                 dr["width"] = 100;
                 dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                 dr["field"] = "school_area";
                 dr["title"] = "所在校区";
                 dr["align"] = "center";
                 dr["width"] = 100;
                 dt.Rows.Add(dr);
    
                string sql = "select building_id,building_name,school_area from building";
                 string countsql = "select count(*) from building";
                 int count = DBHelper.GetScalar(countsql);
                 DataTable dtt = DBHelper.GetDataSet(sql);
            
    
                Hashtable ht = new Hashtable();
                 ht.Add("total", count);
                 ht.Add("columns", dt);
                 ht.Add("rows", dtt);
                 string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(ht);
    
    
                 context.Response.Clear();
                 context.Response.ContentEncoding = Encoding.UTF8;
                 context.Response.ContentType = "application/json";
                 context.Response.Write(strJson);
                 context.Response.Flush();
                 context.Response.End();
             }
            
         }
    
        public DataTable createTable()
         {
    
            DataTable dt = new DataTable("myTable");
    
            //field列
            DataColumn columnField = new DataColumn();//创建一列
            columnField.DataType = System.Type.GetType("System.String");//数据类型
            columnField.ColumnName = "field";//列名
            dt.Columns.Add(columnField);//添加到table
             //title列
            DataColumn columnTitle = new DataColumn();
             columnTitle.DataType = System.Type.GetType("System.String");
             columnTitle.ColumnName = "title";
             dt.Columns.Add(columnTitle);
             //align列
            DataColumn columnAlign = new DataColumn();
             columnAlign.DataType = System.Type.GetType("System.String");
             columnAlign.ColumnName = "align";
             dt.Columns.Add(columnAlign);
             //width列
            DataColumn columnWidth = new DataColumn();
             columnWidth.DataType = System.Type.GetType("System.Int32");
             columnWidth.ColumnName = "width";
             dt.Columns.Add(columnWidth);
    
            return dt;
         }
        
         public bool IsReusable {
             get {
                 return false;
             }
         }
    
    }
    View Code

    Json数格式如下:

    {"total":16,"rows":[{"building_id":"B1","building_name":"1号楼","building_info":"一公寓(女生)","school_area":"小营"},{"building_id":"B2","building_name":"2号楼","building_info":"二公寓(女生)","school_area":"小营"},{"building_id":"B3","building_name":"3号楼","building_info":"三公寓(女生)","school_area":"小营"},{"building_id":"B4-1","building_name":"4-1号楼","building_info":"四公寓(男生)","school_area":"小营"},{"building_id":"B4-2","building_name":"4-2号楼","building_info":"四公寓(女生)","school_area":"小营"},{"building_id":"B5","building_name":"5号楼","building_info":"五公寓(男生)","school_area":"小营"},{"building_id":"B6","building_name":"6号楼","building_info":"六公寓(女生)","school_area":"小营"},{"building_id":"B7","building_name":"七号楼","building_info":"七公寓(女生)","school_area":"小营"},{"building_id":"J1","building_name":"1号楼","building_info":"一公寓(男生) ","school_area":"健翔桥"},{"building_id":"J2-1","building_name":"二公寓","building_info":"二公寓男生","school_area":"健翔桥"},{"building_id":"J2-2","building_name":"三公寓","building_info":"二公寓女生","school_area":"健翔桥"},{"building_id":"J4","building_name":"四公寓","building_info":"四公寓男生","school_area":"健翔桥"},{"building_id":"Q1","building_name":"1号楼","building_info":"一公寓(男生) ","school_area":"清河"},{"building_id":"Q2","building_name":"2号楼","building_info":"二公寓(女生)","school_area":"清河"},{"building_id":"Q3","building_name":"3号楼","building_info":"三公寓(女生) ","school_area":"清河"},{"building_id":"Q4","building_name":"四公寓","building_info":"四公寓男生  ","school_area":"清河"}],"columns":[{"field":"building_id","title":"公寓编号","align":"center","width":100},{"field":"building_name","title":"公寓名称","align":"center","width":100},{"field":"building_info","title":"公寓信息","align":"center","width":100},{"field":"school_area","title":"所在校区","align":"center","width":100}]}

    其实主要原理就是后台生成了columns:[],然后grid.datagrid({columns:[data.columns]})绑定列,就OK了。

  • 相关阅读:
    Codeforces Round #486 (Div. 3) F. Rain and Umbrellas
    Codeforces Round #486 (Div. 3) E. Divisibility by 25
    Codeforces Round #486 (Div. 3) D. Points and Powers of Two
    Codeforces Round #486 (Div. 3) C. Equal Sums
    Codeforces Round #486 (Div. 3) B. Substrings Sort
    Codeforces Round #486 (Div. 3) A. Diverse Team
    2018-06-08
    CCPC-2017-秦皇岛站
    洛谷 P4819 [中山市选]杀人游戏
    洛谷 P2721 小Q的赚钱计划
  • 原文地址:https://www.cnblogs.com/szytwo/p/3086552.html
Copyright © 2020-2023  润新知