【问题标题】:Kendo Grid Is there an event for when a row changes (not selected)?Kendo Grid 当行更改(未选择)时是否有事件?
【发布时间】:2015-02-10 12:11:56
【问题描述】:

我希望检测剑道网格的行何时发生变化,通过导航而不是选择

我的意思是我会有一个可选择的网格:false,在批量编辑模式下,我想在用户选项卡到新行时更新数据源(在代码中)(就像 Access 所做的那样)。

我查看了this example 并更改了以下属性..

selectable: false,
navigatable: true,
editable: true,

不幸的是,changed 事件似乎不会触发选项卡或箭头键(在导航模式下)。

有谁知道我可以按照上述方法做的任何其他方式(即知道我们何时通过导航更改了行)

提前感谢您的帮助!

【问题讨论】:

    标签: javascript kendo-ui telerik kendo-grid


    【解决方案1】:

    您可以使用编辑事件来确定您是否在新行中。

    Here you go:

    selectable: false,
    navigatable: true,
    editable: true,
    edit: function(e) {
        if (e.sender.cellIndex($(e.container)) === 0 && 
            $(e.container).closest("tr").index() !== 0) {
            console.log("next row; update DS");
        }
    },
    

    您还可以存储您所在的最后一行并使用它来确定更改,如果以其他方式而不是通过制表符(或向后制表符)在行之间切换是相关的。

    如果您不希望网格可编辑,那就更难了。这是一个快速破解:

     var grid = $("#grid").data("kendoGrid");
     var elem = $(grid.table)[0];
     var handlers = $._data(elem, "events")["keydown"][2];
     var oldHandler = handlers.handler;
    
     // replace the existing event handler attached by kendo grid
     var newHandler = function (e) {
         oldHandler(e);
    
         var current = grid.current();
         var closestRow = $(current).closest("tr");
         var rowIndex = $(closestRow).index();
    
         if (rowIndex !== grid._lastNavRowIndex) {
             if (typeof grid._lastNavRowIndex !== "undefined") {
                 kendoConsole.log("we just changed to row " + rowIndex);
             }
             grid._lastNavRowIndex = rowIndex;
         }
    
    
     };
    
     handlers.handler = newHandler;
     });
    

    试试here

    【讨论】:

    • 嗨 Lars,再次感谢你,是的,使用变量来保存“最后一行”,并使用上面的事件,我们可以在(通过 Tab 键更改)向后选项卡时获取行更改以及前锋。我们唯一错过的是,如果导航是通过箭头键在“非编辑”模式下完成的,而此编辑事件不会触发。牛逼,想看看非编辑模式有没有类似的技巧。
    • 您的问题中有“可编辑”,所以我认为这就是您要做的;无论如何,没有它会更加困难;我添加了一种方法来做到这一点,但是......不是很漂亮(并且可能有错误,没有经过太多测试)
    • 嗨,拉斯,非常感谢!抱歉,我在编辑或导航中更改了行。我将您的示例设置为可编辑,当网格处于编辑或导航模式时,上面似乎检测到行更改。我将对其进行一些测试,我只是在等待解决能够使用我的 Angular 设置获取网格实例的问题(这是这里的另一个问题.. 叹息)。但是非常感谢这个!
    【解决方案2】:

    This 可能是您正在寻找的。当您想要与数据相关的事件时,您必须查找 DataSource 事件。当您想要与 UI 相关的事件时,请查看 Grid 事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多