Infragistics Jquery Grid主键

Boo*_*one 3 jquery infragistics ignite-ui iggrid

我正在尝试在我的网格上进行行选择,但我正在努力设置或获取datakey值,因为我找不到任何文档.

$("#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
                }
            ]
        });
    });
Run Code Online (Sandbox Code Playgroud)

这根本不起作用.如何在此部分代码中访问我的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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Dam*_*tev 7

[...] dataKeyFields:"EmployeeNumber",//这是你设置dataKeys的方法吗?[...]

足够近.它实际上是'primaryKey',如下所示:

[...]
primaryKey:"EmployeeNumber",
[...]

而对于第二部分,我想这并不是很明显,但是你作为参数传递的行是正在选择的实际DOM TR元素,你可以(正如你当前的设置所示)明确地从其单元格中选择键形式所以:

var rowKey = $(ui.row.element).children().eq(0).text(); //may need to parse if int
Run Code Online (Sandbox Code Playgroud)

注意:eq()方法采用基于零的索引,并且就结构而言,行的子元素是单元格.在这种情况下,主键列是第一个(也是唯一的),因此索引为0.

我发现程序友好的另一种方法是直接从数据源获取密钥(更清楚地阅读并且不需要解析):

var rowKey = ui.owner.grid.dataSource.dataView()[ui.row.index].EmployeeNumber;
Run Code Online (Sandbox Code Playgroud)

注意:"所有者"是负责事件的实际小部件(选择),它具有对"网格"的引用,您可以从中访问数据源.要获取记录,请使用'.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,并且事件包含所有有用的示例代码段列出的参数.

PS如果意图不是控制用户的选择,请考虑使用'-ed'事件,如'rowSelectionChanged' - 可用的参数是相同的.区别在于'-ing'在选择中被触发并且它会阻止UI,如果你添加一些更重的逻辑,这可能会导致应用程序响应不是很快.