2012-06-01 24 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?? ""; 
    
          } 
         }