Jquery JqGrid:如何获取所有json数据,而不仅仅是属于某个列的数据?
我有一个jqGrid,它调用url来填充数据。我使用json作为数据类型。 我需要一些我不想在网格中显示的每一行的信息。因此,我带来了一个属性多于列的json。 但当我这样做的时候:Jquery JqGrid:如何获取所有json数据,而不仅仅是属于某个列的数据?,jquery,json,jqgrid,Jquery,Json,Jqgrid,我有一个jqGrid,它调用url来填充数据。我使用json作为数据类型。 我需要一些我不想在网格中显示的每一行的信息。因此,我带来了一个属性多于列的json。 但当我这样做的时候: jQuery("#gridId").getRowData("2"); 我只能看到与列相关的数据。如何在json中获取和查询我不想在网格中显示的数据 例如,我在JSON中使用了 { Id: 2, Name: Pepe, Profession: Doctor } 我只想在网格中看到两列,Id和Na
jQuery("#gridId").getRowData("2");
我只能看到与列相关的数据。如何在json中获取和查询我不想在网格中显示的数据
例如,我在JSON中使用了
{
Id: 2,
Name: Pepe,
Profession: Doctor
}
我只想在网格中看到两列,Id和Name,但我想知道每行的客户端的专业信息。如果您使用的是Oleg的免费jqgrid,并且版本是最新的,那么您可以这样做:
var theGrid = $("#grid");
var myData = [
{
"Id": 1,
"Name": "John",
"Profession": "Doctor"
},
{
"Id": 2,
"Name": "Pepe",
"Profession": "Doctor"
},
{
"Id": 2,
"Name": "Jane",
"Profession": "Nurse"
}
];
theGrid.jqGrid({
data : myData,
colNames: ['Id', 'Name'],
colModel: [
{name: 'Id'},
{name: 'Name'}
]
});
var allData = theGrid.jqGrid("getGridParam").data;
console.log(JSON.stringify(allData));
//show Pepe's Profession:
$.each(allData, function(i, v){
if(v.Name === "Pepe")
alert(v.Profession);
});
如果你不使用Oleg的免费jqgrid,我强烈建议你这样做,因为最终你会更快乐,他会给你很好的支持。但是,如果您没有使用他的网格,并且您使用的是jqgrid的4.6版,那么您仍然可以使用var allData=theGrid.jqgrid(“getGridParam”).data
从网格中获取所有数据,而不管显示的列是什么
使用免费jqgrid 4.13.1的示例:
使用jqgrid 4.6的示例:
从Oleg的评论中添加:如果您使用的是Oleg的免费jqgrid,并且版本是最新的,那么您可以执行以下操作:
var theGrid = $("#grid");
var myData = [
{
"Id": 1,
"Name": "John",
"Profession": "Doctor"
},
{
"Id": 2,
"Name": "Pepe",
"Profession": "Doctor"
},
{
"Id": 2,
"Name": "Jane",
"Profession": "Nurse"
}
];
theGrid.jqGrid({
data : myData,
colNames: ['Id', 'Name'],
colModel: [
{name: 'Id'},
{name: 'Name'}
]
});
var allData = theGrid.jqGrid("getGridParam").data;
console.log(JSON.stringify(allData));
//show Pepe's Profession:
$.each(allData, function(i, v){
if(v.Name === "Pepe")
alert(v.Profession);
});
如果你不使用Oleg的免费jqgrid,我强烈建议你这样做,因为最终你会更快乐,他会给你很好的支持。但是,如果您没有使用他的网格,并且您使用的是jqgrid的4.6版,那么您仍然可以使用var allData=theGrid.jqgrid(“getGridParam”).data
从网格中获取所有数据,而不管显示的列是什么
使用免费jqgrid 4.13.1的示例:
使用jqgrid 4.6的示例:
从Oleg的评论中添加:解决方案取决于需要显示的行总数。如果行数不多(例如小于1000或小于10000),那么最好的选择是一次返回服务器上的所有数据。您应该添加
loadonce:true
选项,通知jqGrid读取所有数据,并将其保存在内部数据
和\u索引
参数中。下一个重要步骤是将页面大小设置为不太大,例如10、20或25。从服务器加载所有数据后,jqGrid将显示第一页数据。默认情况下,jqGrid要求服务器返回的排序数据对应于sortname
和sortorder
参数,这些参数将作为sidx
和sortd
发送到服务器。另一方面,可以使用附加选项forceClientSorting:true
强制释放jqGrid在显示第一页之前对数据进行排序和过滤
如果选择上述场景,则可以使用additionalProperties
选项为服务器返回的每一行数据保存附加信息。例如,如果希望保存每个数据项中存在的Profession
属性的值,则可以使用additionalProperties:[“Profession”]
选项。之后,您可以使用getLocalRow
通过id访问数据。方法getLocalRow
与getRowData
一样工作得很快,因为它只返回从服务器响应读取的内部row对象的引用。它包含来自colModel
的所有name
属性和来自additionalProperties
的属性
演示演示了该方法
您还询问了如何根据内容在某些行上设置标题。我建议您使用rowattr
设置行的任何属性(title
、class
、style
等等),请参阅或使用cellatr
(请参阅或)
只有当加载非常大的数据并且不能使用loadonce:true
选项时,才能定义伪隐藏列,例如{name:“Profession”,hidden:true}
,而不是用法附加属性
。这种方法效率较低,但会奏效。顺便说一下,additionalProperties
中使用的属性值可以有任何类型。例如,可以在属性(详细信息
,子网格
)中的子网格数据的主数据数组的每个项目中包含。隐藏列不允许加载复杂的数据,因为数据不喜欢被引导,而是被保存为隐藏列中的字符串(在列的
元素中) 解决方案取决于需要显示的行总数。如果行数不多(例如小于1000或小于10000),那么最好的选择是一次返回服务器上的所有数据。您应该添加loadonce:true
选项,通知jqGrid读取所有数据,并将其保存在内部数据
和\u索引
参数中。下一个重要步骤是将页面大小设置为不太大,例如10、20或25。从服务器加载所有数据后,jqGrid将显示第一页数据。默认情况下,jqGrid要求服务器返回的排序数据对应于sortname
和sortorder
参数,这些参数将作为sidx
和sortd
发送到服务器。另一方面,可以使用附加选项forceClientSorting:true
强制释放jqGrid在显示第一页之前对数据进行排序和过滤
如果选择上述场景,则可以使用additionalProperties
选项为服务器返回的每一行数据保存附加信息。例如,如果希望保存每个数据项中存在的Profession
属性的值,则可以使用additionalProperties:[“Profession”]
o