我在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'}
答案 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.id
,id
将成功阅读
如果表示一行的数据是数组,则会使用jsonReader: { id: '0' }
之类的属性
var obj = [48803, "what"];
如果obj[jsonReader.id]
相等obj['0']
或obj[0]
。