我正在尝试在网格上进行行选择,但是由于无法在其上找到任何文档,因此正在努力设置或获取数据键值。

$("#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,如果您添加一些较繁琐的逻辑,则可能会导致应用程序响应性不强。

07-26 08:14