getGridParam不返回数据项的ID

JQGrid getGridParam not returning ID of data item

本文关键字:ID 数据项 返回 getGridParam      更新时间:2023-09-26

我有一个使用从外部ajax请求生成的本地数据的网格(这里的外部是指不使用jqgrid的内置ajax)

ajax请求中的数据作为本地数据传递到网格中,网格设置为加载一次。

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由网格设置,但它不工作任何想法

只有从远端加载的数据(datatype"xml""json")和使用选项loadonce: true时,内部data参数中才存在属性_id_。如果在本地加载数据(使用datatype: "local"),则_id_不存在。

如果您正确地填充网格,由data参数指定的数据(在您的情况下是DataFromResponse)是包含id属性以及用于填充列数据的其他属性的项数组。另一种选择是为某些列指定key: true。在这种情况下,行的id将从列中获取。

如果你没有指定id信息(这是非常糟糕的),你需要访问所有本地数据,包括jqGrid生成的id,你需要得到两个jqGrid选项:_indexdata。对象_index包含网格的所有id作为属性。id属性的取值为id对应的data数组中的整数索引。因此,可以使用for-in循环枚举网格的所有id(您需要枚举_index的属性)。详情请看答案和这个。

您还写道,您在gridComplete内部的网格列中创建了按钮。这种方法对我来说不太好。最好将自定义格式化器与gridview: true选项一起使用(参见答案)。此外,我根本不建议您使用gridComplete。最好使用loadComplete