JqG​​rid:如何从onCellSelect事件中获取所有列值?

时间:2013-12-11 07:18:22

标签: javascript jqgrid

我正在开发一个使用JqGrid生成报告的ASP.NET mvc项目。为了生成报告,我生成了2个不同的报告。将根据第一份报告的值生成第二份报告。 为获取列值,我正在使用JqGrid的OnCellSelect事件,

事件:

$('#Report1').jqGrid({
...
..
colNames: ['name1','name2','name3','name4','name5','name6','name7'],
                        colModel: [
                        {....},
                        { ... },
                        { ...},
                        {...},
                        { ...},
                        { ...},
                        { ... }
                    ],
                        jsonReader: {
                            root: 'DD_data',
                            id: 'name1',
                            repeatitems: false
                        },
                        pager: $('#pager'),
//Event fires when clicked on name7
onCellSelect: function (rowid, index, contents, event) {   

//Code for generating Second Report based on First report data//
$('#Report2').jqGrid({
...
...
});
} 
});

在Cell Select事件中,我只获得rowid,我的密钥和选定的单元格内容。

但我还需要所选列中的name2,name3和name4数据来生成第二个报告。

是否可以在JqGrid。

感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

您可以使用getCellgetRowData根据rowid从该行获取数据。如果您使用datatype: "local"或在网格loadonce: true中使用#Report1选项,那么您可以使用getLocalRow,它比getRowData有一些优势,但仅适用于数据保存在内部data参数内部。仅当datatype不是"json""xml"或者"json""xml"时,才会填充参数,但会使用loadonce: true选项。

您可以使用的最简单的代码是

onCellSelect: function (rowid) {
    var rowData = $(this).jqGrid("getRowData", rowid);
    // now you can use rowData.name2, rowData.name3, rowData.name4 ,...
}

getLocalRow的使用可能会有一些优势(包括性能优势),但您应该验证它是否与您在网格中使用的datatypeloadonce一起使用{{1} }。