我有带有选择选项的剑道网格。我的问题是如何从最后选择的行中获取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);
})
};
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);
})
};
将来,请警惕Kendo事件和jQuery事件之间的区别。
只需在网格grid.select()
函数内部使用change
:
function onChange(e) {
var grid = $("#grid").data("kendoGrid");
var selectedItem = grid.dataItem(grid.select());
console.log(selectedItem.ProductName)
};