1

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

4

1 回答 1

4

仅当从远程源加载的数据 ( is of ) 并且使用了该选项时,该属性才_id_存在于内部参数中。如果一个在本地加载数据(一个使用),则不存在。datadatatype"json""xml"loadonce: truedatatype: "local"_id_

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

如果您没有指定和id信息(这很糟糕)并且您需要访问所有本地数据,包括 jqGrid 生成的 id,您需要获得两个 jqGrid 选项:_indexdata. 该对象_index包含网格的所有 id 作为属性。dataid 属性的值是与 id对应的数组中的整数索引。因此,您可以使用for-in循环来枚举网格的所有 id(您需要枚举 的属性_index)。有关详细信息,请参阅答案这个

您还写道,您在gridComplete. 这种方法似乎我不太好。最好将自定义格式化程序与gridview: true选项一起使用(请参阅答案)。此外,我完全不建议您使用gridComplete。最好使用loadComplete. 有关详细信息,请参阅答案

于 2013-05-23T14:01:24.480 回答