Для загрузки данных KendoUi Grid требуется порядок запуска событий

Я знаю, какие события срабатывают в источнике данных кендо, но мне интересно, есть ли у кого-нибудь список того, в каком порядке происходят события. Я пытаюсь повторно отфильтровать сетку после чтения() и обновления(), но не могу заставить код работать. он отлично сохраняется через событие изменения, но я не знаю, где на самом деле попытаться вставить фильтр обратно в сетку, чтобы он был отфильтрован так же, как и до сохранения

                    dataSource: {                                    
                    type: "json",  
                    serverSorting: false,   
                    batch: true,
                    pageSize: 50,   
                    change: function(e) {
                        dataSource = $("#grid").data("kendoGrid").dataSource;                                                                                                                        
                        saveFilters = dataSource.filter();                            
                        sessionStorage.setItem('theGridFilters', JSON.stringify(saveFilters));
                        console.log("save: " + JSON.stringify(saveFilters) );
                    },                              
                    transport: {
                        read: {
                            url: "./grid_projectselections.php?delob=" + escape(lob),
                            dataType: "json",
                            cache: false,
                            complete: function () {            
                            }
                        },                            
                        update: {
                            url: "./update_projectselections.php?delob=" + escape(lob),
                            dataType: "json",
                            complete: function () {                                                                                                
                                $("#grid").data("kendoGrid").dataSource.read();                                                                                                                        
                                $("#grid").data("kendoGrid").refresh();                       
                            }
                        },                                
                        parameterMap: function(options, operation) {
                            if (operation !== "read" && options.models) {
                                return {models: kendo.stringify(options.models)};
                            }
                        }                        

                    },                        
                    requestEnd: function(e) {
                        if (e.type != undefined ) {
                            if ( e.type === 'read' ) {
                                hidesavingpanel();
                            }
                        }                            
                    },                        
                    schema: {
                        data: "data",
                        total: "total",
                        model: {
                            id: "RowID",
                            fields: {
                                RowID: {editable: false},
                                ProjectID: {editable: false},
                                ProjectName: {editable: true},
                                HostCount: {editable: false},
                                HR_LEVEL_5: {editable: false},
                                HR_LEVEL_6: {editable: false},
                                HR_LEVEL_7: {editable: false},
                                HR_LEVEL_8: {editable: false},
                                HR_LEVEL_9: {editable: false},                                    
                                OrgDescr: {editable: false},
                                GroupDescr: {editable: false},
                                RegionDescr: {editable: false},
                                SectionDescr: {editable: false}
                            }
                        }
                    },

                },
                saveChanges: function(e) {                                                                   
                    var g = $('#grid').data('kendoGrid');
                    var data = g.dataSource.view();
                    var isdirty = false;
                    $.each(data, function (i, item) {
                        if (item.dirty) {
                            isdirty = true;                                        
                        }
                    });                         
                    if ( isdirty === false ) {
                        return true;
                    }
                    showsavingpanel();
                }, 

person David OBrien    schedule 13.11.2013    source источник


Ответы (1)


Порядок при использовании дистанционных операций следующий:

dataSource.requestStart

dataSource.requestEnd

dataBinding

dataBound

dataSource.change

Все они перечислены в документации. Вы также можете использовать следующую демонстрацию. Я не уверен, чего вы пытаетесь достичь, но я подозреваю, что вы пытаетесь сохранить состояние сетки, как описано здесь.

person Petur Subev    schedule 14.11.2013
comment
Спасибо за это ... У меня есть настраиваемая кнопка на панели инструментов, которая выполняет несколько массовых обновлений базы данных в отфильтрованных пользователем строках. После завершения обновлений я вызываю другой метод read(); в источнике данных, чтобы получить обновленные данные. как только это произойдет, фильтры, выбранные пользователем ранее, исчезнут. Я пробовал все, что мог придумать, чтобы перефильтровать записи, чтобы они соответствовали тому, что было выбрано до массового обновления и чтения. - person David OBrien; 14.11.2013