gpt4 book ai didi

jquery - 存储相关的行数据?

转载 作者:行者123 更新时间:2023-12-01 04:43:52 25 4
gpt4 key购买 nike

我正在寻找存储每行数据的最佳方法。我找到了一种使用隐藏列(hidden: true in colModel)的工作方法,但该选项仍然会为隐藏单元格创建 DOM 节点,这对我来说似乎是一种浪费。有更好的办法吗?

最佳答案

首先应该指定如何使用jqGrid。如果使用datatype: "local",则无需创建任何隐藏列。相反,输入数据可以包含诸如

之类的项目
{ id: 123, name: "item name", price: 45.67,
orders: [
{ total: 1543.54, data: "2015-10-02" }
{ total: 1633.71, data: "2015-10-01" }
] }

并且 orders 数组将作为每个项目的一部分保存在 data 数组中。换句话说,您可以保存任意数量的任何类型的附加属性,这些属性将保存在本地数据中。可以使用getLocalRow方法来获取所有数据。例如,可以使用诸如 $("#grid").jqGrid("getLocalRow", "123") 之类的内容来获取与 id="123"的行关联的数据。

如果使用数据类型:“json”并从服务器加载数据,则可以使用另一种选项。免费的 jqGrid 4.9 及更高版本支持 additionalProperties 参数。因此,您可以使用 additionalProperties: ["prop1", "prop2"],而不是创建输入数据中存在的隐藏列 prop1prop2 >。它通知 jqGrid 从输入中读取数据。人们可以使用稍微复杂一点的 additionalProperties 项来读取更复杂的数据并将其与行相关联。使用 additionalProperties 的主要优点:可以在自定义格式化程序中访问指定的属性,并且如果使用 loadonce: true,这些属性将保存在本地。

如果有人使用 TreeGrid,则可以看到许多隐藏列(levelparentisLeafexpandedloadedicon),另外保存在本地数据中。由于 jqGrid 的许多版本,隐藏列并未在内部使用。从版本 4.9 开始,免费的 jqGrid 不会创建不需要的列,并使页面的 DOM 更短。免费的 jqGrid 在这种情况下使用 additionalProperties (请参阅 the wiki article )。

如果当前无法迁移到免费的 jqGrid,则可以使用另一种解决方法。可以使用userdata来保存与网格相关的附加信息。您可以直接在服务器响应中包含 userdata 以及所有必需的信息,也可以使用 beforeProcessing 回调来解析输入数据并填充额外的 userdata 之前输入数据将被jqGrid解析。我建议阅读the old answer对应的代码示例。主要思想是通过 rowid 将 userdata 构建为映射。 map 的项目应包含附加属性:

userdata: {
/* properties of userdata could be the rowids */
123: {
/* the data could contains the object with additional properties */
orders: [
{ total: 1543.54, data: "2015-10-02" }
{ total: 1633.71, data: "2015-10-01" }
]
}
}

允许使用

var addProp = $(this).jqGrid("getGridParam", "userData");

并使用addProp[rowid].orders访问其他属性。

关于jquery - 存储相关的行数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32932705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com