我有带有选择选项的剑道网格。我的问题是如何从上次选择的行中获得ProductName
?例如this。我已经尝试过了,但是row
为空。感谢您的帮助。
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);
})
};
答案 0 :(得分:2)
只需在网格grid.select()
函数内使用change
:
function onChange(e) {
var grid = $("#grid").data("kendoGrid");
var selectedItem = grid.dataItem(grid.select());
console.log(selectedItem.ProductName)
};
答案 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);
})
};
将来,请注意Kendo事件和jQuery事件之间的区别。