0

我正在尝试使用 c# 后端在 extjs 网格 pangel 上实现分页工具栏...我该如何开始呢...我尝试使用 start 和 limit 但我不确定它是如何工作的。有人可以帮助我如何在网格中每页发送大约 20 条记录,因为我的网格正在获取所有 500 条数据,这也降低了我的应用程序的速度,下面是我的控制器将 json 发送到我的商店。请帮助

 public JsonResult getData(int start, int limit)
 {
   List<MyItem> items = new List<MyItem>();
   using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices1"].ConnectionString))
   {
     SqlCommand cmd = con.CreateCommand();
     cmd.CommandText = "SELECT State, Capital FROM MYDBTABLE";
     con.Open();
     SqlDataReader reader = cmd.ExecuteReader();
     while (reader.Read())
     {
       MyItem item = new MyItem();
       item.State = reader[0].ToString(); 
       item.Capital = reader[1].ToString(); 
       items.Add(item);
     }
     con.Close();

     return Json(new {  myTable = items }, JsonRequestBehavior.AllowGet);
   }
}

这是我的商店

this.store = Ext.create('Ext.data.JsonStore', {
        autoLoad: true,
        storeId: 'mystore1',
        pageSize: 20,
        fields: [
    { name: 'State' },
    { name: 'Capital' } 
    ],
        sorters: [
            {
                property: 'State',
                direct: 'ASC'
            }],
        scope: this,
        proxy: {
            type: 'ajax',
            scope: this,
            url: 'StateC/getData',
            autoLoad: { params: {
                start: 0,
                limit: 20
            }
            },
            reader: {
                type: 'json',
                root: 'myTable'
            }
        }
    });
4

1 回答 1

1

我目前正在使用 MySQL 和 PHP,所以肯定会错误检查我的语法,但一般逻辑是相似的,但是在 MsSQL 中查询的语法有点模糊。对于 MsSQL 推荐语法的入门,我建议使用此链接:

http://www.codeguru.com/csharp/.net/net_data/article.php/c19611/Paging-in-SQL-Server-2005.htm

首先,您需要获取 extjs 在 ajax 调用中传递的参数:

int limit = Request.QueryString["limit"];
int page= Request.QueryString["page"];
int upperBound = limit * page;
int lowerBound = limit * (page - 1) + 1;

我认为您的查询也应该是这样的:

SELECT * FROM (
        SELECT 
            ROW_NUMBER() OVER(ORDER BY person) AS rownum, 
            MYDBTABLE.State, 
            MYDBTABLE.Capital 
        FROM MYDBTABLE
    ) AS States
WHERE  States.rownum >= {lowerBound} AND States.rownum <= {upperBound}
于 2012-11-16T00:05:13.310 回答