我有一个网格使用从外部ajax请求生成的本地数据(通过外部我的意思是不使用内置的jqgrid的ajax)
来自ajax请求的数据作为本地数据传递到网格中,并且网格设置为loadonce。
window.grid = $(window.tableName).jqGrid({
datatype: "local",
data: DataFromResponse,
height: "auto",
autowidth: true,
hidegrid: false,
ignoreCase: true,
loadonce: true,
pager: window.pagerName,
rowNum: 10,
viewrecords: true,
gridview: true,
caption: '',
colNames :[cols],
colmodel :[]{cols},
gridComplete: function() {
CreateButtons();
});
正如您在此阶段可以看到网格是基本的,但是我们需要在名为“buttons”的列中添加一些按钮,我们使用 CreateButtons 方法来执行此操作。
function CreateButtons(){
var grid = $(window.tableName);
var data = grid.jqGrid('getGridParam', 'data');
$.each(data, function(index, item){
var cl = item._id_;
alert(cl);
});
}
这个函数的警告应该给我一个由网格设置的行的id,但它没有任何想法
答案 0 :(得分:3)
仅当从远程来源(_id_
加载data
的{{1}})和选项{加载的数据}时,属性datatype
才存在于内部"json"
参数中{1}}被使用了。如果在本地加载数据(一个使用"xml"
),则loadonce: true
不存在。
如果正确填充网格,datatype: "local"
参数(在您的情况下为_id_
)指定的数据是包含data
属性的项目数组以及用于填充列数据。另一个选项是为某些列指定DataFromResponse
。如果行的id
将从列中获取。
如果您没有指定和key: true
信息(这是非常糟糕的)并且您需要访问包含jqGrid生成的ID的所有本地数据,您需要获得两个jqGrid选项:id
和{ {1}}。对象id
包含网格的所有ID作为属性。 id属性的值是_index
数组中的整数索引,它对应于id。因此,您可以使用data
循环来枚举网格的所有ID(您需要枚举_index
的属性)。有关详细信息,请参阅the answer和this one。
您另外写道,您在data
内的网格列中创建了按钮。这种方法似乎并不好。最好将自定义格式化程序与for-in
选项一起使用(请参阅the answer)。此外,我不建议您完全使用_index
。最好使用gridComplete
。有关详细信息,请参阅the answer。