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]);
   }

});

Если вы будете взаимодействовать с источниками данных, а не с самими сетками, вы, вероятно, увидите, что процесс намного быстрее (плюс избавляется от всплывающего сообщения с просьбой подтвердить удаление)

Вы заметите, что я добавил консольный оператор, чтобы вы могли видеть информацию, которую копируете.

Снова надеюсь, что это помогает.

Другие вопросы по тегам