Ext Grid Json分页(asp.net)

首先感叹extjs的强大,无以言表!

今天瞎弄了很久的grid,看了很多网上的例子和教程,终于搞定了分页和返回的json数据中存在换行符的问题 。

刚开始参照网上的例子怎么弄都不能分页,经过调试发现ds.load({params:{start:0,limit:10}});这句话中的参数在后台用Request.QueryString["start"]这种方式获取不到数据,困了我好久,一直以为问题在前台,最后发现问题是后台获取参数的方式有问题,用Request.Params["start"]就OK了 。

下面是辛苦了很久的东东,仅供参考 。

基础教程:

【JavaScript代码】 :

复制代码
Ext.onReady( function (){
    Ext.QuickTips.init();
     var sm =  new Ext.grid.CheckboxSelectionModel();
     var cm =  new Ext.grid.ColumnModel([
         new Ext.grid.RowNumberer(),
        sm,
        {header:'id',dataIndex:'id',align:'center',width:200},
        {header:'subject',dataIndex:'subject',width:500},
        {header:'attributeID',dataIndex:'attributeID',align:'center',width:200}
    ]);
    cm.defaultSortable =  true;

     var ds= new Ext.data.Store({
                    proxy:  new Ext.data.HttpProxy({url:'ajax/stgldata.aspx'}),
                    reader:  new Ext.data.JsonReader({
                        root: 'data',
                        totalProperty:'totalCount'
                   },[ 'id','subject','attributeID']
            ) 
    });
    ds.load({params:{start:0,limit:25}});

     var grid =  new Ext.grid.GridPanel({
        el: 'content',
        ds: ds,
        cm:cm,
        height:500,
        title: 'asp.net Json',
        bbar:  new Ext.PagingToolbar({
            pageSize: 25,
            store: ds,
            displayInfo:  true,
            displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
            emptyMsg: "没有记录"
        })
    });
    
    grid.render();
    
});
复制代码

 

【HTML代码】: 

复制代码
< link  rel ="stylesheet"  type ="text/css"  href ="http://localhost:2008/stk/js/extjs/resources/css/ext-all.css"   />    
    
     < script  type ="text/javascript"  src ="http://localhost:2008/stk/js/extjs/adapter/ext/ext-base.js" ></ script >
     < script  type ="text/javascript"  src ="http://localhost:2008/stk/js/extjs/ext-all.js" ></ script >
     < script  type ="text/javascript"  src ="http://localhost:2008/stk/js/extjs/build/locale/ext-lang-zh_CN.js" ></ script >
复制代码

 

< div  id ="content"  style ="height: 500px;" >

 

【后台(asp.net)】: 
复制代码
            StringBuilder jsonStr =  new StringBuilder();
            jsonStr.Append( " {'data':[ ");            
             int start=Convert.ToInt32(Request.Params[ " start "].Trim());
             int limit =Convert.ToInt32(Request.Params[ " limit "].Trim());
            SqlConnection conn = sqlConn();
             string sqlstr =  " select top  " + limit +  "  id,subject,answer,attributeID from   [2_questions] where id not in (select   top    " + start+  "  id   from   [2_questions]) ";
             try
            {
                conn.Open();
                SqlCommand comm =  new SqlCommand(sqlstr, conn);
                SqlDataReader rd = comm.ExecuteReader();
                 while (rd.Read())
                {
                        jsonStr.Append( " { ");
                        jsonStr.Append( " 'id': " + rd.GetInt32( 0).ToString() +  " , ");
                        jsonStr.Append( " 'subject':' " +rd.GetString( 1) +  " ', ");
                        jsonStr.Append( " 'attributeID': " + rd.GetInt32( 3).ToString() +  "");
                        jsonStr.Append( " }, ");
                }
            }
             finally
            {
                conn.Close();
            }
            jsonStr.Remove(jsonStr.Length -  11);
            jsonStr.Append( " ],'totalCount':1000} ");
            Response.Write(jsonStr);
           
          Response.Flush();
        Response.Close();
上面这两句句是根据我的下面一篇博客来的,否则经试验返回不了数据(前台页面是一个,后台页面cs又是另外一个,奇怪,不能结合在一起吗?)
 
复制代码
效果图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值