Пример из вашей ссылки расширяет класс Widget. Это базовый класс, из которого выводятся все виджеты Kendo UI. В вашем случае вы хотите расширить сетку Keno и добавить функциональность оттуда. Вы не можете изменить подпись метода init, потому что это вызвано внутренними компонентами Kendo, но вы можете легко добавить настраиваемый параметр, чтобы делать то, что вам нужно. Базовая модель:
(function ($, undefined) {
if (!kendo.ui.MyGrid) {
var base = kendo.ui.Grid;
var MyGrid = base.extend({
init: function (element, options) {
// Call the base class's init.
base.fn.init.call(this, element, options);
// Add initialization...
this.myField1 = options.myOption1;
// If you want to watch changes in the dataSource
// attached to the grid, you could use this. Of
// course you don't even need to subclass to do this
// but you get the point.
this.dataSource.bind("change", function(e) {
if (that.options.myCallback) {
that.options.myCallback.call(that, e);
}
};
},
// Add default options...
options: {
myOption1: "Hello",
myOption2: "World",
myCallback: undefined,
}
// Add events...
events: [
"myEvent1",
"myEvent2"
],
// Add fields...
myField1: "Goodbye",
// Add methods...
myMehod: function (a, b, c) {
// Do something...
}
}
// Register the new widget.
kendo.ui.plugin(MyGrid);
}
})(jQuery);
MyGrid теперь обладает всеми возможностями грида плюс ваши дополнительные функции. Затем вы создаете новый экземпляр так же, как и с сеткой.
$("#someElement").kendoMyGrid({
// Add options for standard kendo Grid and your new options...
myCallback: function (e) {
alert(e.action);
}
});
С уважением, moomoo! В этот самый момент я не могу проверить код, но я ценю ваш ответ. Глядя на это, я буду беспокоиться: происходит ли событие 'change'' dataSource' перехватывается и останавливается или распространяется, так что пользователь все равно может назначить ему свои собственные обработчики в конструкторе? – user776686
Да, это работает как шарм! Мне даже не нужно перефразировать конструктор до 'kendoMyGrid' - по умолчанию« kendoGrid »по-прежнему работает. – user776686
Прохладный! Я фактически добавил почти 4K строк кода в Grid (GridEx, я называю это), чтобы делать всевозможные вещи. Не то, что я могу поделиться. – moomoo