Kendo 网格复选框获取最后选择的值

Kendo grid checkbox get last selected value

我有 kendo 个带有 select 选项的网格。我的问题是如何从最后 selected 行得到 ProductName?例如 this。我试过这个但是 row 是空的。感谢您的帮助。

FULL DEMO IN DOJO

function onChange(e) {
    var rows = e.sender.select();
    rows.each(function(e) {
        var grid = $("#grid").data("kendoGrid");
        var row = $(e.target).closest("tr"); //<-- this value capture null
        var dataItem = grid.dataItem(row);
        var productName = dataItem.ProductName;
        alert(productName);
   })
};

只需使用 grid.select() inside grids change 函数:

function onChange(e) {
  var grid = $("#grid").data("kendoGrid");
  var selectedItem = grid.dataItem(grid.select());
  console.log(selectedItem.ProductName)
};

示例:Get last selected item

each 中函数的参数不正确。

这会导致名称屏蔽:https://en.wikipedia.org/wiki/Name_resolution_(programming_languages)#Name_masking

在外层,你有:

function onChange(e) {

然后,在第三行,你有:

 rows.each(function(e) {

这是e的两个功能。那么哪个 e 算数?内层 掩盖了外层

内部函数的正确参数是:

rows.each(function(index, row) {

现在,您已经在遍历行,所以您拥有该行,您不需要使用任何 closest().

来查找它

你也有网格,它是e.sender,因为你在网格事件中。

这将为您提供以下代码:

function onChange(e) {
    var rows = e.sender.select();
    rows.each(function(index, row) {
        console.log(row);
        var dataItem = e.sender.dataItem(row);
        console.log(dataItem);
        var productName = dataItem.ProductName;
        console.log(productName);
   })           
};

Demo

以后注意Kendo事件和jQuery事件的区别