JQGrid getGridParam不返回数据项的ID

时间:2013-05-23 13:29:51

标签: javascript jqgrid

我有一个网格使用从外部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,但它没有任何想法

1 个答案:

答案 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 answerthis one

您另外写道,您在data内的网格列中创建了按钮。这种方法似乎并不好。最好将自定义格式化程序与for-in选项一起使用(请参阅the answer)。此外,我不建议您完全使用_index。最好使用gridComplete。有关详细信息,请参阅the answer