2012-11-15 62 views
0

我想實現使用c#後端在extjs網格pangel上的分頁工具欄...我如何開始做這件事...我已經嘗試使用開始和限制,但我不知道它是如何作品。有人可以幫我,我怎麼才能發送每頁20格左右的網格,因爲我的網格是獲得全部500個數據,這也減緩了我的應用程序以及 下面是我的控制器,發送json到我的商店..請幫助C#Grid Paging和ExtJS 4.1

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' 
      } 
     } 
    }); 

回答

1

我目前使用MySQL & PHP所以肯定錯誤檢查這個我的語法,但一般的邏輯是類似的,但是語法是有點MsSQL中查詢的含義更爲模糊。我建議這個鏈接在MSSQL的底漆recomended語法:

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} 
+0

謝謝你的幫助stephen ..我使用c#。我已經看到了PHP上的各種示例,但我不知道如何在C#中做這件事......我甚至不知道從哪裏開始回答。我可以通過ajax調用的第一個和最後一個,但是upperBound和lowerBound的目的是什麼,然後它是如何計算'totalProperty'的?是否有一個工作示例 – EagleFox

+0

對不起,我沒有看到你的開始和限制值傳入,而上下限只是說要採取哪組記錄。使用傳入的開始和限制值,lowerBound = start,upperBound = start + limit。除此之外,我認爲SQL查詢將在MsSQL中運行,並且只給你一組20條記錄。如果你在這個查詢中使用{cmd.CommandText =「SELECT State,Capital FROM MYDBTABLE」;},我認爲你的代碼將按照你所希望的方式工作。您需要將下限/上限連接到構建查詢的字符串中。 –

+0

這個分頁又回來了,又開始困擾我了......(...應該從extjs傳遞這些參數......我仍然可以獲取第一頁的全部數據,而第二頁上沒有任何內容,即使工具欄說第2頁 – EagleFox