1

У меня есть два кендо сетки по имени: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)); 
    }); 

Когда Im передачи 500 записей destinationgrid. процесс передачи так медленный. Любая идея оптимизировать его.

Благодаря

Вы можете редактировать этот http://jsfiddle.net/2qXKy/112/

+0

Возможно, это лучше подходит для http://codereview.stackexchange.com –

ответ

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

}); 

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

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

Снова надеемся, что это поможет.

+0

спасибо Дэвид Шортозе. другой вопрос при выборе всех записей и передаче его в destinationgrid. он зависает/останавливается. Как много секунд, чтобы ответить – nojla

+0

Ну, это зависит от скорости вашей машины, я думаю. Вы можете добавить заметку на экран/индикатор выполнения, пока он делает копию. но я обнаружил, что при выполнении полной копии он занимал около 10 - 20 секунд. –

+0

одно, что вы могли бы сделать для полной копии, - это увидеть, сколько номеров выбранных строк совпадает с количеством строк в источнике данных и просто скопировать весь источник данных во второй и очистить первый источник данных, а не копировать отдельные строки. –

Смежные вопросы