5

好的,我已经研究了几天,并不确定我做错了什么。如果有人有将 jqGrid 与 C#/ASP.NET 和开源工具一起使用的工作示例,请告诉我在哪里可以找到它们。任何关于寻找体面的文档或工具的提示,我都可以用来调试它(我对 js/jQuery 很陌生)。基本上我只需要就地编辑功能,所以如果我忽略了另一个明显的解决方案,知道它可能会有所帮助......如果可能的话,我想避免使用 AJAX.NET。

我觉得我只是在这里忽略了一些非常明显的东西。

在下面的示例中,我确实显示了 jqGrid,但它没有显示任何数据。

以下是相关的 JavaScript:

jQuery(document).ready(function(){ 
    jQuery("#role_assignment_table").jqGrid({ 
        url:'http://localhost:4034/WebSite2/PageItemHandler.asmx/GetPageItemRolesJson?id=3',
        mtype: 'GET',
        contentType: "application/json; charset=utf-8",
        datatype: "jsonstring",
        colModel:[
            {name:'Id', label:'ID', jsonmap:'Id'},
            {name:'Title', jsonmap:'Title'},
            {name:'AssignedTo', label:'Assigned To', jsonmap:'AssignedTo'},
            {name:'Assigned', jsonmap:'Assigned'},
            {name:'Due', jsonmap:'Due'},
            {name:'Completed', jsonmap:'Completed'}
        ],
        jsonReader: {
            page: "Page",
            total: "Total",
            records: "Records",
            root: "Rows",
            repeatitems: false,
            id: "Id"
        },
        rowNum:10,
        rowList:[10,20,30],
        imgpath: 'js/themes/basic/images',
        viewrecords: false,
        caption: "Role Assignments" 
    });  
});

的HTML:

<table id="role_assignment_table" class="scroll" cellpadding="0" cellspacing="0" />

生成的 JSON:我不确定它是否进入 jqGrid,或者 jqGrid 是否不喜欢我的 JSON 或我的 WebMethod,但是当我转到正确的 URL 并获取 JSON 结果字符串时,我可以自己调用它.

{"Page":"1","Total":1.0,"Records":"4",
"Rows":[
{"Id":1,"Item":null,"Title":"Story Manager","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":2,"Item":null,"Title":"Analysis","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":3,"Item":null,"Title":"Narrative","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":4,"Item":null,"Title":"Graphic","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"}
]
}

干杯,威廉·莱利-兰德

4

5 回答 5

3

在做任何其他事情之前,下载并安装这个:

http://www.fiddler2.com/fiddler2/

它将让您准确查看 jqGrid 请求所请求和发回的内容,以获取 JSON 数据。

我有一些工作 jqGrid 的代码,这里有一些不同的东西:

datatype: "json"

而不是你的:

datatype: "jsonstring"

我还有一个名为的字段colNames,它是一个包含列名的字符串数组。

最后,我有一个pager字段标识将存储分页控件的元素,并且是一个 DIV。

于 2009-06-25T20:11:11.143 回答
2

在 ASP.NET 中,日期被序列化为jqGrid 无法解释的JSON “/Date(ticks)/” 。可能的解决方案(帖子):

  • 为网格编写自定义格式化程序
  • 更改我们发送到网格的数据(通过将格式化日期作为字符串发送)

请告诉您如何使用 jqGrid 实现日期显示?

谢谢你。

于 2009-08-03T04:24:43.383 回答
2

我有完全相同的问题!我想出的解决方案是创建一个自定义 JavaScript 格式化程序:

$(this).jqGrid({  
   ...
   colModel: [
      {
      name: 'SomeDate', index: 'SomeDate', width: 100, formatter: ndateFormatter }
      }],
   ...
});


// Convert C# json Date.
function ndateFormatter(cellval, opts, rwdat, _act) {
    var time = cellval.replace(/\/Date\(([0-9]*)\)\//, '$1');
    var date = new Date();
    date.setTime(time);
    return date.toDateString();
}
于 2009-08-05T01:19:46.557 回答
2

请注意区分大小写的属性数据类型是指带有大写T的数据类型。

于 2010-02-03T09:03:35.197 回答
1

如果您在让 jqGrid 与 ASP.NET 一起工作时遇到问题,请查看此处。这应该可以为您节省大量时间。

于 2009-07-23T16:48:07.233 回答