繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM