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 
-   1 1 );
            jsonStr.Append(
" ],'totalCount':1000} " );
            Response.Write(jsonStr);
           
         Response.Flush();
        Response.Close();
上面这两句句是根据我的下面一篇博客来的,否则经试验返回不了数据(前台页面是一个,后台页面cs又是另外一个,奇怪,不能结合在一起吗?)
 
复制代码
效果图:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值