免费jqGrid。与单元格一起获取列名
我试图用一个错误输出来实现数据完整性检查,该输出描述哪些单元格未被填充到行中。免费jqGrid。与单元格一起获取列名
//get row id
var gr = $("#" + subgrid_table_id).jqGrid('getGridParam', 'selrow');
// check row select
if (gr != null) {
/*
var myGrid = $("#" + subgrid_table_id),
selRowId = myGrid.jqGrid('getGridParam', 'selrow'),
//get cell value:
col1Value = myGrid.jqGrid('getCell', selRowId, 'stage');
//get all colnames
var columnNames = myGrid.jqGrid('getGridParam','colNames');
//get column name by index:
var col1Name = columnNames[4];
if (col1Value == "") {
alert("This data is empty: "+col1Name);
}
else {
也就是说,一切似乎都奏效,但是当您更改列数时,一切都可能会浪费。如何将列名与ColMames中的名称链接起来以获得动态解决方案?
首先将jqGrid的所有参数保存在myGrid.jqGrid('getGridParam')
可用的一个对象中。因此var selRowId = myGrid.jqGrid('getGridParam', 'selrow');
与p.selrow
相同,其中var p = myGrid.jqGrid('getGridParam');
。
该列将通过colModel
的索引进行标识:p.colModel[iCol]
。另一方面,列的name
属性将作为列iCol
的索引被更频繁地知道。此外,存在通过拖放列标题重新排列列的可能性。一个需要包括网格的sortable: true
选项以使可能性成为可能。列顺序可以通过columnChooser
或通过直接调用方法remapColumns
或remapColumnsByName
来更改。由于所有的原因,建议保存列的名称(永远不会更改),而不是列索引。
要通过列名得到列索引,可以遍历colModel
数组并测试name
属性的值。为了加速这种操作,jqGrid提供了地图对象iColByName
作为jqGrid的选项。因此,如果您知道列名cmName
,则可以使用var iCol = p.iColByName[cmName];
来获取列索引。 colModel
中的列将为p.colModel[iCol]
,列标题的文本将为p.colNames[iCol]
。
顺便说一下,我不确定您是否正确理解colNames
的值。该参数的名称不好,但会因与旧版本的兼容性而被使用。数组colNames
的元素是HTML片段,将放置在列标题中。可以在colNames
之内有空字符串,或者对于不同的列有相同的标题。另一方面,colModel
的name
属性是该列的真实名称。它不能为空。不能在不同列中使用重复名称,并且名称不能包含空格。
我希望拥有上述信息,您将很容易找到关于每一列的完整信息。
最后一句话。有三种主要方法可用于获取网格数据:getCell
,getRowData
和getLocalRow
。 jqGrid获取输入数据,格式化数据并将格式化的HTML片段放入单元格中(在<td>
中)。此外,jqGrid将原始原始数据保存在内部data
参数(这是项目数组,表示行)中。 data
参数仅在使用本地数据(datatype: "local"
)的情况下或者在从远程设置(datatype: "json"
或datatype: "xml"
)加载数据的情况下存在,但是另外使用loadonce: true
选项。 getLocalRow
让你从内data
,在该行的数据已设置直接引用内部JavaScript对象的方法getCell
和getRowData
unformats从细胞(S)(从<td>
)的数据和方法。因此,只要网格具有本地数据,建议使用getLocalRow
而不是getCell
或getRowData
。