jqgrid 4.5.4 jsonReader没有正确使用id

时间:2013-11-20 15:47:40

标签: jqgrid

我在jsonReader中定义了id字段。在jqgrid版本4.4.5中,这很有用,但在版本4.5.4中,将忽略id并始终使用行号。我创建了两个jsfiddles来演示:

双击该行以获取该行的ID。

这个正确显示基于jsonReader中设置的id (滚动到底部查看示例网格代码。我找不到4.4.5的外部链接) 版本4.4.5:http://jsfiddle.net/cVk59/1/

这个错误地显示了id的rowNumber。它忽略了jsonReader中的设置。 版本4.5.4:http://jsfiddle.net/cnsgH/

jsonReader:{ repeatitems:false, id:'0'}

1 个答案:

答案 0 :(得分:0)

您为jsonReader.id使用了错误的值。从服务器返回的当前数据具有以下格式

...
rows: [
    {id: 48803, thingy: "what"}
]
...

因此,行的数据将由

之类的对象表示
var obj = {id: 48803, thingy: "what"};

要从对象获取id,需要使用jsonReader: { repeatitems: false, id: 'id' }。由于id: 'id'已经是默认值,因此您只能使用jsonReader: { repeatitems: false }

我尝试解释id: '0'在您的案例中jsonReader的错误属性的原因。 jqGrid只需使用obj[jsonReader.id]来获取每行数据的id。因此,如果您使用jsonReader:{ repeatitems:false, id:'0'},那么jqGrid会尝试使用obj['0']这是错误的(undefined值)。如果您使用jsonReader: { repeatitems: false, id: 'id'}代替jsonReader: { repeatitems: false},那么obj[jsonReader.id]将等于obj['id']obj.idid将成功阅读

如果表示一行的数据是数组,则会使用jsonReader: { id: '0' }之类的属性

var obj = [48803, "what"];

如果obj[jsonReader.id]相等obj['0']obj[0]