[英]kendo ui grid: Compare data in multiple selected rows?
好的,在这里改写问题,似乎缺乏清晰度。
我有一个kendo ui网格,当我对行进行多个选择(一次选择2个或更多)时,我需要比较所有选定行中特定列的值,以确定它们是否完全相等(相同) 。 这是我的Kendo'change:'函数,有问题的dataItem我们称为'fancyNumber':
change: function(e) {
var selectedRows = this.select();
var selectedDataItems = [];
for (var i = 0; i < selectedRows.length; i++) {
var dataItem = this.dataItem(selectedRows[i]);
selectedDataItems.push(dataItem);
}
var selected = $.map(this.select(), function(item) {
return $(item).text();
});
function allValuesSame() {
for (var i = 1; i < selectedRows.length; i++)
{
if(this[i] != this[0])
return false;
}
return true;
}
if (selected.length > 1){
var selectedRows = $("#myTable").data("kendoGrid").select();
var fancyNumberText = this.dataItem(this.select()).fancyNumber
if (allValuesSame(fancyNumberText) === true) {
alert(fancyNumberText); //just testing to see what I get
}
return allValuesSame(fancyNumberText);
}
if (selected.length == 0) {
$('#fancyButton').attr('disabled', 'disabled');
} else if (selected.length == 1) {
$('#fancyButton').attr('disabled', false);
} else if (selected.length > 1 && allValuesSame == true) {
$('#fancyButton').attr('disabled', false);
}
},
显然,这是不正确的。 我该怎么做呢?
您可以使用.dataSource属性获取网格所绑定的模型,并在那里进行比较。
http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#fields-dataSource
假设您的网格具有一个myDataGrid的ID,则可以使用:
var gridModel = $("#myDataGrid").data("kendoGrid").dataSource.data();
// Sample comparison
if (gridModel[3].someField === gridModel[5].someField) {
// Do something with your buttons
}
您需要使用以下内容设置网格...
.Selectable(sel => sel.Mode(GridSelectionMode.Multiple))
.Events(e => e.Change("onChange"))
将这些放置到位后,您可以选择单独的行,并且有一个事件,该事件在选择onChange
被调用
在您的脚本中,连接此功能...
function onChange() {
//you can get the selected row like this
var selected = $.map(this.select(), function(item) {
return item.getAttribute('data-uid');
});
//if selected count > 1 then check logic and enable/disable button
EnableDisableButton(true, "#myButton");//assuming condition was good
}
您需要设置onChange
来记录每个选择的行值,也许使用一个数组,然后比较该数组中的值。
function EnableDisableButton(isToBeEnabled, buttonName) {
if (isToBeEnabled)
$(buttonName).removeAttr("disabled").removeClass("k-state-disabled");
else
$(buttonName).prop("disabled", true).addClass("k-state-disabled");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.