Как я могу ограничить количество строк, которые может иметь KendoUI Grid?

У меня есть простая сетка пользовательского интерфейса кендо, которая должна иметь максимум 5 строк. Есть ли какое-либо свойство конфигурации, которое я могу использовать для ограничения строк, или мне следует написать простую пользовательскую логику для проверки моего источника данных и предотвратить добавление более 5 строк?


person Sandeep    schedule 26.11.2012    source источник


Ответы (2)


Учитывая следующее определение kendoGrid:

var grid = $("#grid").kendoGrid({
    dataSource:stocksDataSource,
    columns   :[
        { field:"col1", title:"Column 1" },
        { field:"col2", title:"Column 2" },
        { field:"col3", title:"Column 3" }
    ],
    toolbar   :[
        { name      :"create", className :"k-grid-add2" }
    ],
    editable  :true
}).data("kendoGrid");

Где я добавил кнопку create на панель инструментов, но переопределил ее className на k-grid-add2. Затем я добавляю ловушку для события click на этой кнопке следующим образом:

$(".k-grid-add2", grid.element).bind("click", function (ev) {
    console.log("adding!");
    if (grid.dataSource.data().length < 5) {
        grid.addRow();
    } else {
        alert("Too many, sorry!")
    }
});

Где я проверяю количество строк, и если их меньше 5, я вызываю grid.addRow(), в противном случае я предупреждаю пользователя о том, что строк слишком много.

person OnaBai    schedule 26.11.2012
comment
вернуть ложь; //после if else в случае пакетного режима - person Shaz; 15.07.2014

Если вы имеете в виду, что размер страницы должен быть ограничен 5 строками, вы можете установить параметр pageSize в источнике данных:

$("#grid").kendoGrid({
   dataSource: {
       pageSize: 5
   }
});

http://docs.kendoui.com/api/web/grid#pageablepagesize-number

person Mario S    schedule 26.11.2012
comment
Нет, я на самом деле хочу, чтобы в сетке всегда было только 5 строк, и, если подумать, я думаю, что это нужно делать с моей собственной логикой в ​​​​источнике данных :) Но спасибо ...! - person Sandeep; 26.11.2012
comment
Мне просто интересно, действительно ли мне следует использовать эту строку: if($(#divProductsGrid).data(kendoGrid).dataSource.data().length ‹ 5) {// do something } - person Sandeep; 26.11.2012
comment
Нет, такого варианта нет (афаик). - person OnaBai; 26.11.2012
comment
Это сетка, куда вы можете добавлять строки? Если это так, ваше решение не препятствует добавлению строк, а скорее проверяет, меньше ли количество строк, чем 5. Решение похоже, но вам нужно перехватить событие add и grid.addRow, если строк меньше 5. - person OnaBai; 26.11.2012
comment
@Sandeep Вы правы, тогда это нужно сделать до добавления источника данных. Как выглядит ваш источник данных? Это массив, список, что-то еще? - person Mario S; 26.11.2012
comment
Марио и Эмилиано — да, вы оба правы, именно так я и делаю сейчас. Моим источником данных будет массив json. Спасибо за помощь ! - person Sandeep; 28.11.2012