zoukankan      html  css  js  c++  java
  • 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了。

  • 相关阅读:
    CF1454F Array Partition
    leetcode1883 准时抵达会议现场的最小跳过休息次数
    leetcode1871 跳跃游戏 VII
    leetcode1872 石子游戏VIII
    CF1355C Count Triangles
    CF1245D Shichikuji and Power Grid
    CF1368C Even Picture
    CF1368D AND, OR and square sum
    CF1395C Boboniu and Bit Operations
    SpringBoot和开发热部署
  • 原文地址:https://www.cnblogs.com/szytwo/p/3086552.html
Copyright © 2011-2022 走看看