我有一个从远程 URLjqgrid
的响应中获取的设置。JSON
我发回的字段之一JSON
是一组值。我正在尝试将此数组存储在隐藏列中,以便在选择网格中的元素时可以访问它,但jqgrid
正在将我的数组转换为字符串[object Object]
。
有没有办法说服jqgrid
数组保持完整以便可以访问它们,getRowData
或者您是否必须在服务器上将数组编码为字符串,然后在客户端对其进行解码?
我有一个从远程 URLjqgrid
的响应中获取的设置。JSON
我发回的字段之一JSON
是一组值。我正在尝试将此数组存储在隐藏列中,以便在选择网格中的元素时可以访问它,但jqgrid
正在将我的数组转换为字符串[object Object]
。
有没有办法说服jqgrid
数组保持完整以便可以访问它们,getRowData
或者您是否必须在服务器上将数组编码为字符串,然后在客户端对其进行解码?
隐藏列只是具有 CSS 样式的列display: none
。您不能将对象放在<td>...</td>
. 所以对象会通过调用toString
方法自动转换为字符串。
您真正需要的是在某处保存对象(例如数组) 。当用户稍后选择一行网格时,将调用回调onSelectRow
。回调将 rowid 作为参数。因此,最好的办法是通过 rowids 将您的自定义信息保存为字典(对象)。
其中一个选项是发送附加信息,而不是rows
在服务器响应的一部分内部,而是在内部userdata
。例如,您尝试当前以以下格式发送数据
{
"page": 1
"total": 7
"records": 123
"rows": [
{"id": 10, "cell": ["cell11", "cell12", "cell13", [1, 2, 3]]}
{"id": 20, "cell": ["cell11", "cell12", "cell13", [4, 5, 6]]},
...
{"id": 90, "cell": ["cell11", "cell12", "cell13", [9, 8, 7]]}
]
}
您可以将服务器响应修改为
{
"page": 1
"total": 7
"records": 123
"rows": [
{"id": 10, "cell": ["cell11", "cell12", "cell13", [1, 2, 3]]}
{"id": 20, "cell": ["cell11", "cell12", "cell13", [4, 5, 6]]},
...
{"id": 90, "cell": ["cell11", "cell12", "cell13", [9, 8, 7]]}
],
"userdata": {
"10": [1, 2, 3],
"20": [4, 5, 6],
...
"90": [9, 8, 7]
}
}
在这种情况下,该userdata
部分将由 jqGrid 自动保存在内部参数中userData
(注意 JSON 数据中“userdata”中的大小写和"userData"
作为参数的使用)。
现在,您将能够通过以下方式在任何回调中获取自定义数据:
onSelectRow: function (rowid) {
var custom = $(this).jqGrid("getGridParam", "userData");
// custom[rowid] is the data from userdata like [4, 5, 6]
}
如果您无法修改服务器响应,您可以将自定义数据移动到回调userdata
内部。有关此类代码的示例,beforeProcessing
请参见答案。