javascript - 将 json 数组存储在 jqgrid 的隐藏列中

标签 javascript jquery json jqgrid

我有一个 jqgrid 设置为从远程 URL 的 JSON 响应中获取。我在 JSON 中发回的字段之一是值数组。我试图将这个数组存储在隐藏列中,以便在选择网格中的元素时可以访问它,但是 jqgrid 正在将我的数组转换为字符串 [object Object].

有没有办法说服 jqgrid 保持数组完好无损,以便可以使用 getRowData 访问它们,或者您是否必须在服务器上将数组编码为字符串,然后在客户端解码它们?

最佳答案

隐藏列只是一个具有CSS样式的列display: none .您不能将对象放置在 <td>...</td> 内的 HTML 页面上.所以对象将通过调用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 内部的部分打回来。参见 the answer有关此类代码的示例。

关于javascript - 将 json 数组存储在 jqgrid 的隐藏列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14490172/

相关文章:

javascript - 向表格动态添加文本时无法显示分页表格 View

javascript - jquery .each 循环奇怪的行为

javascript - knockout 数据绑定(bind)到自行生成的 DOM

php - 将 jQuery ajax 中的 json 数据作为新行插入到表中

PHP - 检索 json 字符串的第一个元素而不转换为数组

Python JSON编码器支持日期时间?

javascript - django 模板循环调用 javascript 函数

javascript - 在 Javascript 函数内缓存值

javascript - jQuery DataTables “No Data Available in Table” 和排序时表格折叠

json - 使用 JOOQ 将数据插入 postgres 中的 JSON 列