简体   繁体   English

Kendo网格 - 如何在RowSelected上获取行详细信息?

[英]Kendo grid - How to get the row details on RowSelected?

As part of Kendo grid upgrade, some of my old code seems to be not working due to change in implementation 作为Kendo网格升级的一部分,由于实现方式的改变,我的一些旧代码似乎无法正常工作

I have used events.Change to trigger a row click event(Sample code below) 我使用了events.Change来触发行点击事件(下面的示例代码)

@(Html.Kendo().Grid(Model.BankSearchList).Name("Grid")
                                .Events(events =>
                                {
                                    events.Change("onRowSelected");
                                    events.DataBound("onGrindBound");
                                })

In my onRowSelected(e) method, I was accessing key column member using 在我的onRowSelected(e)方法中,我使用了访问键列成员

e.row.cells[0].innerHTML

e.row is undefined now. e.row现在未定义。 What is the right way to use now? 现在使用的正确方法是什么? Using events.Change for row selected functionality the right way to do so? 使用events.Change行选择功能正确的方法吗?

here is reference on how to get selected row detail jsfiddle . 这里有关于如何获取选定行详细信息jsfiddle的参考 click on row to get its detail. 点击行获取其详细信息。

var gview = $("#grid").data("kendoGrid");
//Getting selected item
var selectedItem = gview.dataItem(gview.select());
alert(selectedItem.ShipName);

Example - get the selected data item(s) when using row selection 示例 - 使用行选择时获取所选数据项

The same you can do using the html helper as well. 使用html帮助器也可以这样做。 onchange event. onchange事件。

<div id="grid"></div>
<script>
$("#grid").kendoGrid({
  columns: [
    { field: "name" },
    { field: "age" }
  ],
  dataSource: [
    { name: "Jane Doe", age: 30 },
    { name: "John Doe", age: 33 }
  ],
  selectable: "multiple, row",
  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);
    }
    // selectedDataItems contains all selected data items
  }
});
</script>

Example - get the selected data item(s) when using cell selection 示例 - 使用单元格选择时获取所选数据项

<div id="grid"></div>
<script>
function grid_change(e) {
  var selectedCells = this.select();
  var selectedDataItems = [];
  for (var i = 0; i < selectedCells.length; i++) {
    var dataItem = this.dataItem(selectedCells[i].parentNode);
    if ($.inArray(dataItem, selectedDataItems) < 0) {
      selectedDataItems.push(dataItem);
    }
  }
  // selectedDataItems contains all selected data items
}


$("#grid").kendoGrid({
  columns: [
    { field: "name" },
    { field: "age" }
  ],
  dataSource: [
    { name: "Jane Doe", age: 30 },
    { name: "John Doe", age: 33 }
  ],
  selectable: "multiple, cell"
});
var grid = $("#grid").data("kendoGrid");
grid.bind("change", grid_change);
</script>

I have to use events.change to fire a row click event 我必须使用events.change来触发行单击事件

@(Html.Kendo().Grid(Model.BankSearchList).Name("Grid")
                            .Events(events =>
                            {
                                events.Change("onRowSelected");
                            })

then handle the onRowSelected function as : 然后处理onRowSelected函数:

  <script> 
 var selectedRow = null;
    //onRowSelected
    function onRowSelected(e)
    {
        var row = this.select();
        if (row.length > 0 )
        {
            selectedRow = e.sender.select();
            var item = e.sender.dataItem(selectedRow);
        }
    }
</script>

so, the item variable contain all details you needs. 因此,item变量包含您需要的所有详细信息。

For those with AngularJS: 对于那些使用AngularJS的人:

$scope.gridOptions = {
    dataSource: gridDataSource,
    columns: [
        { field: 'name' },
        { field: 'phone' }
    ],
    selectable: 'row',
    change: function () {
        var selectedRows = this.select();
        var rowData = this.dataItem(selectedRows[0]);
        console.log(rowData.name + ' ' + rowData.phone);
    };
};

Make sure to have selectable: 'row' or selectable: 'multiple, row' in the grid options. 确保selectable: 'row'selectable: 'multiple, row'网格选项中的selectable: 'multiple, row'

function onRowSelected(e) {
    var gview = $("#grid").data("kendoGrid");
    //Getting selected item
    var selectedItem = gview.dataItem(gview.select());
    var colValue = selectedItem["<columnName>"];
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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