2010-07-27 116 views
1

从jqGrid JSON数据发布到浏览器,我可以看到行标识(由JSON行数据中的“i”表示)正确通过,但是当我做出选择并检查$('#list').getGridParam('selarrrow')它显示的是与其ID相对的所选行号jqGrid'selarrrow'返回行号而不是行ID

有没有人有这方面的经验?由于

UPDATE

下面是JSON结果的图片(复制和粘贴不是一个真正的选择)

(bigger version of the image here)

JSON Result http://i31.tinypic.com/25qwufd.png

和JavaScript代码来检查选择:

<script type="text/javascript"> 
    function checkSelection(){ 
     alert($('#list').getGridParam('selarrrow').join()); 
    } 
</script> 
+0

你能张贴测试JSON数据和JavaScript代码示例(尤其是jsonReader使用)。 – Oleg 2010-07-27 11:23:47

+0

对不起Jimbo,但我不能重现您发布的数据和代码的问题。看例如http://www.ok-soft-gmbh.com/jqGrid/GetScheduledReleases.txt和http://www.ok-soft-gmbh.com/jqGrid/GetScheduledReleases.htm。如果您发布了部分JSON数据(仅限某些行)和jqGrid声明的代码(可以是简化版),则无需运行服务器组件即可重现问题。然后你可以找到你的问题的解决方案。 – Oleg 2010-07-27 13:34:20

+0

我想从服务器发送的ID将被忽略,所以行号将是真正的行ID。你可以在'loadComplete'事件中用'getDataIDs'方法来验证。 – Oleg 2010-07-27 13:39:09

回答

3

贾斯汀和奥列格 - 我确定你被放在这个星球上解决世界的jQueries :)再次感谢您对这个问题的帮助。肯定它是如何获得的截图i = <id>上面,我不知道,但它 -

SOLUTION
在我的代码,网格的列定义didnt指定从中借鉴各行的ID的key列没有为每一行使用该ID。我改变了电网定义如下:

..., 
colNames: ['ID', 'Family', 'Variety', 'Type', 'EDI #', 'Colour', 'Swatch'], 
colModel: [{ name: 'id', index: 'id', key: true, hidden: true }, 
... 

(请注意在colModel的key: true ID列)

0

你确定吗?根据jqGrid documentation for selarrrow

此选项是只读的。确定当multiselect设置为true时当前选定的行。这是一维数组,数组中的值对应于网格中选定的ID。

所以,如果它是返回行号在jqGrid API有一个错误。您是否可以发布更多信息,例如您致电selarrrow的结果以及网格中ID的完整列表?

0

我想从服务器发送的ID将被忽略,所以行号将是真正的行ID。您可以使用loadComplete事件中的getDataIDs方法验证此情况。为什么这些ID会被忽略我只能说如果你发布更多的信息。