我从API加载JQGrid,我的网格数据结构之一是格式化的JSON元素:
{"id":123,"name":"John Doe","username":"john.doe"}
数据在网格中正确显示,但是如果我尝试输入工具栏搜索,我不会得到匹配,大概是因为jqgrid仍然将上面的JSON存储为对象。
我的网格的截断版本如下:
$('#test').jqGrid({
...
loadonce: true,
datatype: 'local',
colModel: [
{name:'test', index:'test', label:'Test', formatter:customFormatter}
],
...
});
function customFormatter (cellvalue,options) {
return cellvalue.name;
}
我发现这个post似乎解决了这个问题,但是我很难理解如何将它用于JSON对象。加载网格后,我没有看到为什么本地数据应该是除字符串以外的任何内容的原因(直到重新加载网格)。
答案 0 :(得分:0)
在文档中遇到JSON点符号并将其添加到索引后,现在可以正常工作:
colModel: [
{name:'test.name', index:'test.name', label:'Test'}
]
答案 1 :(得分:0)
您应该选择name
colModel
属性,该属性对应于JSON输入中属性的名称。因此只使用
colModel: [
{name: "name", label: "Name"}
{name: "username", label: "User Name"}
]
如果确实需要将JSON输入中的某些名称重新映射到colModel
中的其他名称,则应使用jsonmap
属性。例如
colModel: [
{name: "test1", label: "Name", jsonmap: "name"}
{name: "test2", label: "User Name", jsonmap: "username"}
]
如果使用index
,则无法使用name
作为loadonce: true
使用name
。 不推荐使用具有.
或任何其他meta-character的name
属性值。存在限制是因为id
属性将用于构建网格的许多元素的{{1}}属性。