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

时间:2020-06-10 02:51:58

标签: kendo-ui kendo-grid

我有带有选择选项的剑道网格。我的问题是如何从上次选择的行中获得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);
   })
};

2 个答案:

答案 0 :(得分:2)

只需在网格grid.select()函数内使用change

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

示例:Get last selected item

答案 1 :(得分:2)

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事件之间的区别。

相关问题