【问题标题】:Using JQGrid with custom paging in Asp.Net MVC在 Asp.Net MVC 中使用带有自定义分页的 JQGrid
【发布时间】:2012-06-01 12:28:49
【问题描述】:

我正在使用带有 Trirand.Web.Mvc 类的 JQGrid,并试图弄清楚如何进行自定义分页。

我看过分页演示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 提供整个结果集中特定页面的正确行大小。我还可以返回总行数。

所以我的结果在 List myListOfObjects 中。

我可以使用 myListOfObjects.AsQueryable() 将它传递给 DataBind

问题是,JQGrid 认为只有 {page size} 行,所以不显示任何分页选项。

是否可以传入总行数?

其他网格,如 Teleriks MVC 网格允许您传入总行数,并正确显示分页

【问题讨论】:

    标签: asp.net-mvc-3 jqgrid-asp.net


    【解决方案1】:

    好的,所以我自己设法解决了这个问题。可能还有其他方法可以做到这一点,如果是这样,我很乐意听到他们的声音!

    JQGrid.DataBind 生成一个 JsonResult 对象,其 Data 值设置为 Trirands 自己的对象 Trirand.Web.Mvc.JsonResponse

    这是他们 Trirand.Web.Mvc 的内部类,所以我必须复制它的结构,我可以使用 Visual Studio 调试看到它。

    它有:

    • page - 当前页码
    • 记录 - 总记录数
    • rows - Trirand.Web.Mvc.JsonRow 类型(我也需要复制)
    • total - 需要的总页数

    JsonRow 看起来像:

    • cell - 列的字符串数组
    • 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?? "";
    
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 2011-07-03
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      相关资源
      最近更新 更多