Asp.net mvc 3 在Asp.NETMVC中使用带有自定义分页的JQGrid

Asp.net mvc 3 在Asp.NETMVC中使用带有自定义分页的JQGrid,asp.net-mvc-3,jqgrid-asp.net,Asp.net Mvc 3,Jqgrid Asp.net,我将JQGrid与Trirand.Web.Mvc类一起使用,并试图找出如何进行自定义分页 我看过页面演示 这些演示的问题在于,它们直接绑定到linq上下文对象,并让MVC负责分页 // This method is called when the grid requests data. You can choose any method to call // by setting the JQGrid.DataUrl property pu

我将JQGrid与Trirand.Web.Mvc类一起使用,并试图找出如何进行自定义分页

我看过页面演示

这些演示的问题在于,它们直接绑定到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()将其传递到数据绑定

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

是否可以传入总行数


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

Ok,所以我自己设法解决了这个问题。也许还有其他的方法,如果是的话,我很想听听他们

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

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

它有:

  • 页码-当前页码
  • 记录-记录总数
  • 行-类型为Trirand.Web.Mvc.JsonRow(我也需要复制)
  • total—所需的总页数
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;
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?? "";

            }
        }