【问题标题】:jqgrid paging not working ...need helpjqgrid 分页不起作用...需要帮助
【发布时间】:2011-02-23 06:35:30
【问题描述】:

下面是我的jqgrid代码

 $(function() {
        jQuery("#jsonmap").jqGrid({
        url: 'Handler.ashx',
            datatype: "json",
            colNames: ['Inv No', 'Name','Email'],
            colModel: [{ name: 'id', index: 'id', width: 100},
              { name: 'name', index: 'name', width: 200 },
              { name: 'email', index: 'email', width: 200}],
              rowNum: 10, rowList: [10, 20, 30],
              pager: '#pjmap',
              sortname: 'id',
              viewrecords: true, sortorder: "desc",
              jsonReader: { repeatitems: false, id: "0" },
                  caption: "JSON Mapping", height: '100%'
              }); 
          jQuery("#jsonmap").jqGrid('navGrid', '#pjmap', { edit: false, add: false, del: false,search:false }); 
            });
  • 我的 json 数据:

{"page": 1,"total": 2,"records": 15,"rows": [{"id": 1, "name":"giri", "email":"giri"}, {"id": 2, "name":"ravi", "email":"giri"},{"id": 3, "name":"kumar", "email":"giri"}, {"id": 4, "name":"raju", "email":"giri"}, {"id": 5, "name":"madhu", "email":"giri"},{"id": 6, "name":"vivek", "email":"giri"}, {"id": 7, "name":"radha", "email":"giri"}, {"id": 8, "name":"krishna", "email":"giri"}, {"id": 9, "name":"raghu", "email":"giri"}, {"id": 10, "name":"bhaskar", "email":"giri"}, {"id": 11, "name":"bhaskar", "email":"giri"}, {"id": 12, "name":"bhaskar", "email":"giri"}, {"id": 13, "name":"bhaskar", "email":"giri"}, {"id": 14, "name":"bhaskar", "email":"giri"}, {"id": 15, "name":"subbu", "email":"giri"}]}

分页不起作用。谁能告诉我错误是什么? 谢谢...

【问题讨论】:

    标签: jquery jqgrid paging


    【解决方案1】:

    您在 jqGrid 中使用的url 将附加有关所需页面的信息。您需要使用HttpContextQueryString 集合来获取参数。之后您必须在服务器端实现数据分页

    public class Handler : IHttpHandler {
        public void ProcessRequest (HttpContext context) {
            string pageToLoad = context.Request.QueryString["page"];
            string rowsPerPage = context.Request.QueryString["rows"];
            string sortIndex = context.Request.QueryString["sidx"];
            string sortDirection = context.Request.QueryString["sord"]; //"asc" or "desc"
            ...
        }
    }
    

    如果用户单击网格的下一页/上一页按钮,如果用户单击列标题对数据进行排序,则新请求将发送到服务器。因此,在使用datatype:'json'datatype:'xml' 的情况下,服务器负责从正确的页面提供数据。在分页之前,应该预先对数据进行排序。

    如果您在服务器端实现数据分页有问题,您可以返回所有数据并将loadonce:true 包含在jqGrid 参数列表中。您应该了解,在使用loadonce:true 的情况下,数据将从服务器仅加载一次。首次加载后,datatype 参数将更改为'local'

    我建议您(如果可能的话)使用 ASMX Web 服务或更好的 WFC 服务作为您 Web 的一部分,而不是使用非常古老的 ASP.NET Web 处理程序 (ashx) 技术。

    【讨论】:

    • 使用方法:string pageToLoad = context.Request.QueryString["page"];字符串 rowsPerPage = context.Request.QueryString["rows"];字符串 sortIndex = context.Request.QueryString["sidx"];字符串 sortDirection = context.Request.QueryString["sord"];只获取那些特定的值
    • @user601367:对不起,我不明白你的问题。你的意思是什么“特殊价值”?如果您附加(修改)您对当前使用的代码片段的质疑,很多事情会更清楚。问题应该在服务器代码中解决,但是您没有发布任何服务器代码。
    • 公共类处理程序:IHttpHandler { public void ProcessRequest (HttpContext context) { string pageToLoad = context.Request.QueryString["page"];字符串 rowsPerPage = context.Request.QueryString["rows"];字符串 sortIndex = context.Request.QueryString["sidx"];字符串 sortDirection = context.Request.QueryString["sord"]; //"asc" or "desc" ... } } 在上面的代码中,它们是 4 个变量 pageToLoad ,rowsPerPage ,sortIndex ,sortDirection ....如何使用这些变量来获取第二页的值???
    • @user601367:对不起,这是我的代码,因为我没有你的代码。什么不工作?您在服务器端使用 MS SQL Server 吗?您使用哪种数据访问方式:SqlDataReader、LINQ to SQL、实体框架……?你知道在数据访问技术中如何实现带数据分页的select吗?
    • 我正在使用 sql server 2008 并且正在构建 json 字符串...我正在一次获取数据并构建 json 字符串...所以我的问题是如何使用 pageToLoad,rowsPerPage 过滤 json 中的数据,sortIndex ,sortDirection 为每个页面更改
    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    相关资源
    最近更新 更多