好的,在这里重新提出这个问题,似乎缺乏清晰度。
我有一个kendo ui网格,当我对行进行多次选择(一次2个或更多)时,我需要比较所有选定行中特定列的值,以确定它们是否完全相等(相同) ) 或不。这是我的kendo'change:'函数,我们称之为'fancyNumber'的dataItem:
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);
}
},
显然,这是不正确的;我该怎么做?答案 0 :(得分:0)
您可以使用.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
}
答案 1 :(得分:0)
您需要使用以下内容设置网格...
.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");
}