0

C# バックエンドを使用して extjs グリッド pangel にページング ツールバーを実装しようとしています...どうすればそれを開始できますか... start と limit を使用してみましたが、どのように機能するかわかりません。私のグリッドは500個のデータすべてを取得しているため、グリッドでページごとに約20レコードを送信する方法について誰か助けてください.

 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

まず、ajax呼び出しでextjsによって渡されるパラメーターを取得する必要があります。

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 に答える