Kendo网格复选框获取上一个选定的值

问题描述 投票:0回答:2

我有带有选择选项的剑道网格。我的问题是如何从最后选择的行中获取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);
   })
};
kendo-ui kendo-grid
2个回答
2
投票

each中的函数中参数不正确。

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

在外部,您具有:

function onChange(e) {

然后,在第三行中,您有:

 rows.each(function(e) {

这是e的两个功能。那么哪个e很重要?内部的masks外的一个。

内部函数的正确参数是:

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


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

© www.soinside.com 2019 - 2024. All rights reserved.