Я работаю над функционалом в Kendo Grid.Есть таблица, и у каждой строки есть флажок, есть опция Select All
, которая проверяет все флажки, и рядом с этой опцией Select All
есть кнопка для Update All
строк, когда вы нажимаете на Update All
ееобновит Status
выбранных строк в таблице, но она еще не обновлена в базе данных.Чтобы обновить эти строки в базе данных, вы должны нажать кнопку Save Changes
.Проблема, с которой я сталкиваюсь, заключается в том, что при нажатии кнопки Update All
производительность становится очень очень медленной для более чем 100 строк, и я знаю, почему в Javascript
этот код делает шаг очень медленным:
var items = $('#grid').data().kendoGrid.dataSource.data();
$.each(selectedRows, function (index, r) {
var indexOf = rows.indexOf(r);
var item = items[indexOf];
item.set('STATUS', status); //This line of code is very slow for more than 100 records
});
Таким образом, использование метода set делает этот процесс очень медленным, когда имеется более 300 записей. Chrome перестает отвечать на запросы.Поэтому я изменил это на следующее:
var items = $('#grid').data().kendoGrid.dataSource.data();
$.each(selectedRows, function (index, r) {
var indexOf = rows.indexOf(r);
var item = items[indexOf];
item.STATUS = status; //It works fast now
});
kendoGrid.refresh();
Сетка корректно обновляется во внешнем интерфейсе, но когда я нажимаю Save Changes
, контроллер, который должен сохранять эти записи в базе данных, не вызывается, это потому, чтоизменения в столбце Status
не обнаруживаются при использовании последнего синтаксиса. В чем разница между
item.set('STATUS', status);
и
item.STATUS = status;
kendoGrid.refresh();
Почему на втором шагестроки сохраняются в базе данных с помощью метода set()
, но когда я использую item.STATUS = status;
и нажимаю Save Changes
, строки с изменениями не отправляются по запросу?