Как обрабатывать событие двойного щелчка строки Kendo UI Grid

У меня есть выбираемая сетка KendoUI в моем приложении MVC. Я хочу что-то сделать, когда пользователь дважды щелкает по сетке.

Я не вижу события двойного щелчка для сетки.

Как я могу обработать событие двойного щелчка, если его нет?


person Water Cooler v2    schedule 30.12.2013    source источник


Ответы (4)


Используйте стандартное событие двойного щелчка. Первый щелчок выберет строку сетки, добавив к ней класс .k-state-selected, а второй щелчок вызовет событие двойного щелчка.

$("#yourgridname").on("dblclick", "tr.k-state-selected", function () {
    // insert code here
});
person EfrainReyes    schedule 30.12.2013
comment
Я уверен, что это так, потому что я много гуглил, но это не работает для меня. Я не знаю, что я делаю неправильно. - person Water Cooler v2; 31.12.2013
comment
Это странно, я использую точно такой же метод в конкретном проекте, и он работает для меня. Что вы хотите сделать, когда пользователь дважды щелкнет сетку? - person EfrainReyes; 31.12.2013
comment
Я хочу получить данные строки, по которой он дважды щелкнул. Это выбираемая сетка. Теперь я удалил обработчик события двойного щелчка и поместил туда кнопку «Выбор». Пожалуйста, помогите мне, ответив на этот вопрос: stackoverflow.com/questions/20858763/ - person Water Cooler v2; 31.12.2013

Вы также можете использовать dataBound

dataBound: function (e) {
   var grid = this;
   grid.tbody.find("tr").dblclick(function (e) {
      var dataItem = grid.dataItem(this);
      ...
    });
}

с http://www.telerik.com/forums/double-click-on-grid-row-with-angular

person fangxing    schedule 21.07.2016
comment
Это, безусловно, самое простое и чистое решение, которое я нашел в Интернете. Возможно, добавьте, что dataBound — это конфигурация сетки Kendo UI. - person Gabriel Hautclocq; 28.06.2017
comment
Чтобы заставить это работать, мне нужно было изменить вторую строку на const grid = e.sender;. - person David Clarke; 22.06.2020
comment
Этот подход добавляет обработчик событий к каждому элементу tr. Итак, если у вас есть тысяча строк, вы получите тысячу обработчиков событий. Лучше использовать делегированный обработчик событий вместо напрямую связанного обработчика событий. - person jpllosa; 13.04.2021

С помощью kendoHelpers вы можете получить элемент данных строки. https://github.com/salarcode/kendoHelpers

kendoHelpers.grid.eventRowDoubleClick (theGrid, 
    function(dataItem){
        // do stuff with dataItem
    });

Он также имеет eventCellDoubleClick, который работает с ячейками.

person Salar    schedule 13.09.2015

Вот еще один способ справиться с этим:

var grid = $('#myGrid').kendoGrid({
    columnMenu: true,
    filterable: true,
    selectable: true,
    // and many more configuration stuff...
}).data('kendoGrid');

grid.tbody.delegate('tr', 'dblclick', function() {
    var dataItem = grid.dataItem($(this));
    // do whatever you like with the row data...
});

Начиная с версии 3.0, delegate считается устаревшим. Вы можете использовать on, например:

grid.tbody.on('dblclick', 'tr', function() {
    var dataItem = grid.dataItem($(this));
    // do whatever you like with the row data...
});
person jpllosa    schedule 07.05.2020
comment
Этот подход работал лучше для меня - обработчик события dblclick(function (e) {...}); не работал после редактирования строки (встроенный). - person David Clarke; 15.07.2020