ASP.NET 中的 Telerik Grid 按钮单击时的核心复选框迭代

Telerik Grid in ASP.NET Core Checkbox Iteration on button click

我正在使用 Telerik Grid 作为 ASP.NET 核心控件。 我有一个复选框,我只需要为选中的行遍历网格。

网格是这样定义的(部分):

          @(Html.Kendo().Grid<WebPortal.
        Controllers.RebateReturnData>()
        .Name("gridRebates")      
                                                                      .AutoBind(true)
                                                                      .Columns(c =>
                                                                      {
                                                                          c.Select().Title("Select").Width(60);
                                                                          c.Bound(e => e.id).Title("ID").Width(150);
                                                                          c.Bound(e => e.rebateProgram).Title("Program");

上面的'c.Select() 添加了复选框并且有效。 如果我执行以下代码,那么它会按预期显示在控制台中:

    function onChange(e) {
    var selectedRows = this.select();
    var selectedDataItems = [];
    for (var i = 0; i < selectedRows.length; i++) {
        var dataItem = this.dataItem(selectedRows[i]);
        selectedDataItems.push(dataItem);
    }

    // selectedDataItems contains all selected data items
    console.log(selectedDataItems);
}

我有一个测试按钮设置来调用测试函数:

         <kendo-button name="getSelected" type="button" onclick="checkSelected()">test selection</kendo-button>

我在其中放置了各种代码,但绝对没有什么好结果。 如果我只是将上面的代码放入其中,那么 'this.select()' 将不起作用。 我最近的尝试:

    function checkSelected() {

    var data = $("#gridRebates").data("kendoGrid").dataSource.data();

    var foundChecked = 0; 
    $.each(data,
        function (i, row) {
            var checkNumber = row.isChecked;
            console.log(checkNumber);
            if (checkNumber != null) {
                foundChecked++;
            }

        });
            alert("checked count: " + foundChecked);
}

这会迭代行,但总是 returns 计数为 0。

原来是相当直接的(就像大多数事情一样,一旦你知道答案)。 Telerik 支持帮助我解决了这个问题:

    function getSelectedData() {

    var grid = $("#grid").data("kendoGrid");
    var selectedRows = grid.select();

    selectedRows.each(function (e) {
        var dataItem = grid.dataItem(this);

        console.log(dataItem);
    })
}