KendoUI сетки оптимизировать
У меня есть две сетки кендо по имени:
var sourcegrid = $('#usersGrid').data("kendoGrid"); //SOURCE GRID
var destinationgrid = $('#teamGrid').data('kendoGrid'); //DESTINATION GRID
В sourcegrid у меня есть 1000 записей, а в destinationgrid нет записей.
У меня есть кнопка для передачи данных из Sourcegrid в DestinationGrid.
Код:
sourcegrid.select().each(function () {
var dataItem = sourcegrid.dataItem($(this));
destinationgrid.dataSource.add(dataItem);
sourcegrid.removeRow($(this));
});
Когда я передаю 500 записей в сеть назначения. процесс передачи очень медленный. Любая идея оптимизировать это.
Спасибо
Вы можете редактировать это http://jsfiddle.net/2qXKy/112/
1 ответ
Вот моя попытка ускорить процесс для вас:
http://jsfiddle.net/5t5c2g1y/2/
var ds1 = new kendo.data.DataSource( {
data: createRandomData(500),
scrollable: true,
schema: {
model: {
id: "id",
fields: {
id: {
type: 'number',
editable: true
},
FirstName: {
type: 'string',
editable: true
},
LastName: {
type: 'string',
editable: true
}
}
}
}
});
var ds2 = new kendo.data.DataSource({
data: createRandomData(0),
scrollable: true,
schema: {
model: {
id: "id",
fields: {
id: {
type: 'number',
editable: true
},
FirstName: {
type: 'string',
editable: true
},
LastName: {
type: 'string',
editable: true
}
}
}
}
});
var sourcegrid = $("#usersGrid").kendoGrid({
dataSource: ds1,
editable: "popup",
selectable: "multiple",
pageable: false,
columns: [{
field: "FirstName",
width: 90,
title: "First Name"
}, {
field: "LastName",
width: 90,
title: "Last Name"
}]
}).data("kendoGrid");
var destinationgrid = $("#teamGrid").kendoGrid({
dataSource: ds2,
editable: "popup",
selectable: "multiple",
pageable: false,
columns: [{
field: "FirstName",
width: 90,
title: "First Name"
}, {
field: "LastName",
width: 90,
title: "Last Name"
}]
}).data("kendoGrid");
$('input[type=button]').on('click',function() {
var removalList = [];
sourcegrid.select().each(function () {
var dataItem = sourcegrid.dataItem($(this));
console.log(dataItem);
removalList.push(dataItem)
ds2.add(dataItem);
});
for(var i = 0; i< removalList.length;i++)
{
ds1.remove(removalList[i]);
}
});
Если вы будете взаимодействовать с источниками данных, а не с самими сетками, вы, вероятно, увидите, что процесс намного быстрее (плюс избавляется от всплывающего сообщения с просьбой подтвердить удаление)
Вы заметите, что я добавил консольный оператор, чтобы вы могли видеть информацию, которую копируете.
Снова надеюсь, что это помогает.