asp.net 下 ext填充grid代码

本文展示了一个使用ExtJS框架创建的数据表格示例,该表格实现了分页加载、行号显示等功能,并通过Ajax从服务器获取数据。代码中包含了前端配置及后端C#处理过程。
/**
 * @author fox
 */
Ext.onReady(function() {
    Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif';
    Ext.QuickTips.init();
    //var sm = new Ext.grid.CheckboxSelectionModel();
    var cm = new Ext.grid.ColumnModel([
        new Ext.grid.RowNumberer(),
        //sm,
        { header: '用户编号', dataIndex: 'user_code', sortable: true },
        { header: '电表编号', dataIndex: 'meter_num' },
        { header: '购电量', dataIndex: 'pur_power' },
        { header: '购电时间', dataIndex: 'pur_date' }
    ]);

    var ds = new Ext.data.GroupingStore({
        proxy: new Ext.data.HttpProxy({ url: 'GetJson.aspx',method: 'post' }),
        reader: new Ext.data.JsonReader({
            root: 'data',
            totalProperty: 'totalRecordCount'
        }, [
            { name: 'user_code', mapping: 'user_code', type: 'string' },
            { name: 'meter_num', mapping: 'meter_num', type: 'string' },
            { name: 'pur_power', mapping: 'pur_power', type: 'int' },
            { name: 'pur_date', mapping: 'pur_date', type: 'string' }

        ])
    });

    var record_start = 0; 
    var grid = new Ext.grid.GridPanel({
        el: 'grid3',
        ds: ds,
       // sm: sm,
        cm: cm,
        width: 700,
        height: 280,
        loadMask:{msg:'系统正在查询,请稍候......'},
        bbar: new Ext.PagingToolbar({
            pageSize: 10,
            
            store: ds,
            displayInfo: true,
            displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
            emptyMsg: "没有记录",
            doLoad : function(start)
            {
               record_start  = start; 
               var o = {}, pn = this.paramNames; 
               o[pn.start] = start; 
               o[pn.limit] = this.pageSize;  
               this.store.load({params:o});  
            }
        })
    });
    //el:指定html元素用于显示grid
    
   ds.load({ params: { start: 0, limit: 10} });
    grid.render(); //渲染表格
     
    
});


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetJson.aspx.cs" Inherits="GetJson" %>
<%=strJsonSource %>

public partial class GetJson : System.Web.UI.Page
{
    protected string strJsonSource = string.Empty;
    protected void Page_Load(object sender, EventArgs e)
    {
        int start = int.Parse(Request.Form["start"].Trim()); //获取页面显示的起始数
        int limit = int.Parse(Request.Form["limit"].Trim()); //获取每页记录数
        
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "server=(local);database=cpudata;user id =sa;password= 19790601";
        try
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select top 100 user_code,meter_num,pur_power,pur_date from pur_power_detail";
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            int pageCount = ds.Tables[0].Rows.Count;
            DataTable dt = ds.Tables[0];
            strJsonSource = DataTableToJson(dt, "data", start, limit);

            

            
 


        }
        catch (Exception ex)
        {

            Response.Write(ex.Message);
        }
        finally
        {
            conn.Close();
        }

        HttpContext.Current.Response.Write(strJsonSource);
        HttpContext.Current.Response.End();
        








        //strJsonSource = ReturnJson.JsonString();
        //HttpContext.Current.Response.Write(strJsonSource);
        //HttpContext.Current.Response.End();
    }
    public static string DataTableToJson(DataTable dt, string strTableName, int start, int limit)
    {
        StringBuilder jsonBuilder = new StringBuilder();
        string head = "{ success:true,\"totalRecordCount\":\"" + dt.Rows.Count.ToString() + "\",\"";
        //jsonBuilder.Append("{\"");
        string tmpStr = "";
        jsonBuilder.Append(strTableName);
        jsonBuilder.Append("\":[");
        if (dt.Rows.Count > 0)
        {
            int endCount = start + limit;
            if (endCount > dt.Rows.Count)
                endCount = dt.Rows.Count;
            for (int i = start; i < endCount; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("\"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("\":\"");
                    tmpStr = dt.Rows[i][j].ToString().Trim();

                    jsonBuilder.Append(tmpStr.Replace("\"", "\\\""));
                    jsonBuilder.Append("\",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
        }
        jsonBuilder.Append("]");
        jsonBuilder.Append("}");
        return head + jsonBuilder.ToString();
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值