2012-06-01 52 views
0

我正在使用帶有Trirand.Web.Mvc類的JQGrid,並試圖弄清楚如何進行自定義分頁。在Asp.Net中使用JQGrid自定義分頁MVC

我所看到的頁面演示here

的問題,這些演示是他們直接綁定到LINQ上下文對象,讓MVC採取分頁的照顧。

// This method is called when the grid requests data. You can choose any method to call   
    // by setting the JQGrid.DataUrl property   
    public JsonResult PerformanceLinq_DataRequested()   
    {    
     // Get both the grid Model and the data Model    
     // The data model in our case is an autogenerated linq2sql database based on Northwind.    
     var gridModel = new OrdersJqGridModel();    
     var northWindModel = new NorthwindDataContext();    
     // return the result of the DataBind method, passing the datasource as a parameter    
     // jqGrid for ASP.NET MVC automatically takes care of paging, sorting, filtering/searching, etc 
     return gridModel.OrdersGrid.DataBind(northWindModel.OrdersLarges);   
    }  

數據集我想結合是相當複雜的,我從一個存儲過程,它不分頁我回來了。

所以我必須給JQGrid是整個結果集的特定頁面的行的正確大小。我也可以返回總行數。

所以我有我的結果列表myListOfObjects。

我可以通過這個到使用myListOfObjects.AsQueryable()的DataBind已

的問題是,jqGrid的認爲只有{頁面大小}行,所以不顯示任何的分頁選項。

是否可以傳入總行數?

其他網格,像Teleriks MVC網格允許您在總行數通過,並顯示分頁正確

回答

0

好了,我已經成功地解決了這個自己。可能還有其他方法可以做到,如果有的話,我很樂意聽到他們的聲音!

的JQGrid.DataBind產生JsonResult對象,其數據值設置爲Trirands自己的對象Trirand.Web.Mvc.JsonResponse

這是一個內部類的Trirand.Web.Mvc,所以我不得不復制它的結構,我可以看到使用Visual Studio調試。

它具有:

  • 頁 - 當前頁碼
  • 紀錄 - 總記錄數
  • 行 - 型Trirand.Web.Mvc.JsonRow的(我需要複製太)
  • 總 - 的總頁數需要

JsonRow樣子:

  • 細胞 - 你行ID

所以我的代碼看起來像這樣 - 你列

  • ID的字符串數組:

    var jsonList = new List<JSONRow>(); 
    myData.ForEach(x => jsonList.Add(new JSONRow(x))); 
    
    var jsonResult = Json (new 
              { 
               page = page, 
               rows = jsonList.ToArray(), 
               records = totalRows, 
               total = Math.Round((double)totalRows/rows, MidpointRounding.AwayFromZero) 
              }, JsonRequestBehavior.AllowGet); 
    
    
        return jsonResult; 
    

    我JsonRow看起來是這樣的:

    public class JSONRow 
         { 
          public string[] cell { get; set; } 
          public string id { get; set; } 
    
          public JSONRow(MyObjectType myObject) 
          { 
           id = myObject.id; 
           cell = new string[3]; 
           cell[0] = myObject.Col1; 
           cell[1] = myObject.Col2?? ""; 
           cell[2] = myObject.Col3?? ""; 
    
          } 
         }