我正在尝试在网格上进行行选择,但是由于无法在其上找到任何文档,因此正在努力设置或获取数据键值。
$("#divGrid").igGrid({
columns: [
{ headerText: "@Manage.gridColumnEmployeeNumber", key: "EmployeeNumber" },
],
dataKeyFields: "EmployeeNumber", //Is this how you set the dataKeys?
autoGenerateColumns: false,
dataSource: jsonp,
features: [
{
name: "Selection",
rowSelectionChanging: rowSelectionChanging
}
]
});
});
这根本不起作用。如何在此代码部分中访问我的dataKey(primaryKey)?
function rowSelectionChanging(evt, ui) {
if (confirm) {
var rows = ui.getSelectedRows();
var selectedRow = rows.getItem(0);
var selectedDataKey = selectedRow.get_dataKey();
alert(selectedDataKey);
} else {
return false;
}
}
最佳答案
[...]
dataKeyFields:“ EmployeeNumber”,//您是如何设置dataKeys的?
[...]
足够近。实际上是“ primaryKey”,如下所示:
[...]
primaryKey:“ EmployeeNumber”,
[...]
对于第二部分,我想这并不是很明显,但是作为参数传递的行是正在选择的实际DOM TR元素,您可以(如当前设置所建议的那样)从其单元格像表中那样简单地选择键所以:
var rowKey = $(ui.row.element).children().eq(0).text(); //may need to parse if int
注意:eq()方法采用从零开始的索引,根据结构,该行的子元素是单元格。在这种情况下,主键列是第一列(也是唯一列),因此索引为0。
我发现对程序更友好的另一种方法是直接从数据源获取密钥(更清晰易读,无需解析):
var rowKey = ui.owner.grid.dataSource.dataView()[ui.row.index].EmployeeNumber;
注意:“所有者”是负责事件的实际窗口小部件(“选择”),它具有对“网格”的引用,您可以从那里访问数据源。要获取记录,请使用'.data()'或'.dataView()'-后者仅包含索引所依据的实际可见行,并且如果启用了任何其他功能(分页,排序,过滤),则应使用..)。
这是文档页面(在底部),描述了选择事件提供的内容-http://help.infragistics.com/NetAdvantage/jQuery/2012.1/CLR4.0?page=igGrid_Selection_Overview.html
这里是完整的API参考:http://help.infragistics.com/jQuery/2012.1/ui.iggridselection#events-从这里您可以深入到任何网格/网格功能/数据源API,并且事件具有示例性代码段,其中列出了所有有用的参数。
附言如果不是要控制用户的选择,请考虑使用“ -ed”事件,如“ rowSelectionChanged”中一样-可用参数相同。区别在于,“-ing”是在中间选择时触发的,它阻止了UI,如果您添加一些较繁琐的逻辑,则可能会导致应用程序响应性不强。