kendo ui grid:比较多个选定行中的数据?

时间:2015-02-18 15:09:51

标签: javascript jquery kendo-ui

好的,在这里重新提出这个问题,似乎缺乏清晰度。

我有一个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);
}

},

显然,这是不正确的;我该怎么做?

2 个答案:

答案 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");
}