【问题标题】:Kendo grid checkbox get last selected value剑道网格复选框获取最后选择的值
【发布时间】:2020-06-10 02:51:58
【问题描述】:

我有一个带有选择选项的剑道网格。我的问题是如何从最后选择的行中获得ProductName?例如this。我已经尝试过了,但 row 为空。感谢您的帮助。

FULL DEMO IN DOJO

function onChange(e) {
    var rows = e.sender.select();
    rows.each(function(e) {
        var grid = $("#grid").data("kendoGrid");
        var row = $(e.target).closest("tr"); //<-- this value capture null
        var dataItem = grid.dataItem(row);
        var productName = dataItem.ProductName;
        alert(productName);
   })
};

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

    each 中的函数参数不正确。

    这会导致名称屏蔽:https://en.wikipedia.org/wiki/Name_resolution_(programming_languages)#Name_masking

    在外层,你有:

    function onChange(e) {
    

    那么,在第三行,你有:

     rows.each(function(e) {
    

    这是e 的两个功能。那么哪个e 重要?内层掩盖外层。

    内部函数的正确参数是:

    rows.each(function(index, row) {
    

    现在,您已经在对行进行迭代,因此您拥有该行,您无需使用任何 closest() 来查找它。

    你也有网格,它是e.sender,因为你在一个网格事件中。

    这会给你以下代码:

    function onChange(e) {
        var rows = e.sender.select();
        rows.each(function(index, row) {
            console.log(row);
            var dataItem = e.sender.dataItem(row);
            console.log(dataItem);
            var productName = dataItem.ProductName;
            console.log(productName);
       })           
    };
    

    Demo

    以后要注意Kendo事件和jQuery事件的区别。

    【讨论】:

      【解决方案2】:

      只需在网格change 函数内使用grid.select()

      function onChange(e) {
        var grid = $("#grid").data("kendoGrid");
        var selectedItem = grid.dataItem(grid.select());
        console.log(selectedItem.ProductName)
      };
      

      示例:Get last selected item

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 2014-01-29
        • 2019-11-14
        • 2013-04-17
        • 1970-01-01
        相关资源
        最近更新 更多