asp.net – jqgrid jsonReader配置

前端之家收集整理的这篇文章主要介绍了asp.net – jqgrid jsonReader配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是jqgrid的新手,最后我设置了一个网格.假设我需要设置jsonReader,以便网格知道在json返回中获取网格数据的位置.然而,在尝试了几天后我得到了空白细胞.

这是我的网格:

jQuery("#list48").jqGrid({
            url: 'dbtest.aspx/get_offsite_history2',datatype: "json",mtype: 'POST',ajaxGridOptions: { contentType: "application/json" },serializeGridData: function(postData) {
                return JSON.stringify(postData);
            },jsonReader: {
                root: function(obj) { alert(JSON.stringify(obj.d)); return obj.d; },repeatitems: false
            },height: 'auto',rowNum: 30,rowList: [10,20,30],colNames: ['name','start_date','duration','offsite_cat'],colModel: [
                          { name: 'name',index: 'name',width: 80,align: 'left',editable: true,edittype: 'text' },{ name: 'start_date',index: 'start_date',width: 120,{ name: 'duration',index: 'duration',{ name: 'offsite_cat',index: 'offsite_cat',edittype: 'text'}],pager: "#plist48",viewrecords: true,sortname: 'name',caption: "Grouping Array Data",gridview: true
        });

这是从url dbtest.aspx / get_offsite_history2返回的服务器:

{"d":"[{\"name\":\"A\",\"start_date\":\"B\",\"duration\":\"C\",\"offsite_cat\":\"D\"}]"}

我想通过设置“root:’d’得到结果但是我有64个空白行…

寻找评论……非常感谢

解决方法

您的问题的原因是您的服务器代码中的错误.您对JSON进行了两次序列化.在反序列化服务器响应的d属性之后,您仍然获得JSON字符串(!!!)而不是对象.典型错误是在Web方法中手动使用JavaScriptSerializer.Serialize.应该返回对象本身而不是序列化结果的字符串.

在不修改当前服务器代码的情况下,您可以通过使用来解决问题

jsonReader: {
    root: function (obj) {
        alert(typeof obj.d === "string" ? obj.d : JSON.stringify(obj.d));
        return typeof obj.d === "string" ? $.parseJSON(obj.d) : obj.d;
    },repeatitems: false,page: function () { return 1; },total: function () { return 1; },records: function (obj) {
        return typeof obj.d === "string" ? $.parseJSON(obj.d).length : obj.length;
    }
}

或者(如果你使用loadonce:true)

jsonReader: {
    root: function (obj) {
        return typeof obj.d === "string" ? $.parseJSON(obj.d) : obj.d;
    },repeatitems: false
}

因为您当前的服务器代码似乎没有实现数据分页,所以您应该将rowNum增加到某个足够大的值,如rowNum:10000或使用loadonce:true.

更新:您可以找到有效的here修改演示.它显示

在提醒信息之后.

原文链接:https://www.f2er.com/aspnet/251134.html

猜你在找的asp.Net相关文章