Как использовать JsonRestStore с формой поиска и редактируемой сеткой данных

Я пытаюсь реализовать форму поиска, где результаты будут отображаться через сетку данных Dojo 1.6. У меня работает рендеринг, я делаю вызов ajax при отправке формы, а затем строю Datagrid в функции обратного вызова, используя ItemFileWriteStore.

 function search()
{
    var action = './search.json';
    dojo.xhrPost({url: action, form:"searchForm",
                    load: function(result) {
                                            var newStore = new dojo.data.ItemFileWriteStore({
                                                data: {
                                                    identifier: "id", 
                                                   items: JSON.parse(result),
                                                   url:'./search.json'
                                                }
                                            });
                                            var grid = dijit.byId("searchResultsGrid");

                                            if(grid == null) {
                                                var layout = [[
                                                      {'name': 'Id', 'field': 'id', 'width': '50px'},
                                                      {'name': 'Name', 'field': 'name', 'width': '50px',editable: true,},
                                                      {'name': 'Source', 'field': 'source', 'width': '50px',editable: true,},
                                                      {'name': 'Version', 'field': 'version', 'width': '50px',editable: true,}
                                                    ]];

                                                var grid = new dojox.grid.DataGrid({
                                                    id: 'searchResultsGrid',
                                                    store: newStore,
                                                    structure: layout,
                                                    autoHeight:true, autoWidth:true, editable:true, columnReordering:true,
                                                    rowSelector: '20px'
                                                });
                                                grid.placeAt("gridDiv");
                                                grid.startup();
                                            }
                                            else {
                                                grid.setStore(newStore);
                                            }
                                         }
    });
}

Теперь, когда я пытаюсь сделать сетку редактируемой и сохранить изменения на сервере, ничего не происходит с ItemFileWriteStore. Так что я хочу переключиться на JsonRestStore, чтобы я мог сохраняться.

Но вопрос в том, как связать отправку формы в JsonRestStore или, другими словами, есть ли способ передать динамический запрос в JsonRestStore? Я хочу, чтобы JsonRestStore извлекал данные при отправке формы поиска и на основе значений в форме поиска.

Заранее спасибо!

1 ответ

Я бы использовал магазин dojo.store.JsonRest. Чтобы использовать хранилище JsonRest с dojox.grid.DataGrid, вам нужно обернуть его в dojo.data.ObjecStore, как показано ниже:

var newStore = new dojo.store.JsonRest({
    target: '/search/',
    idProperty: 'id'
});
newStore = new dojo.data.ObjectStore({
    objectStore: newStore
});

Теперь / search / target должен быть вашим REST URL. Ваш бэкэнд для / search / должен поддерживать REST, что означает, что вы должны поддерживать запросы GET, PUT, POST, DELETE. Взгляните на http://dojotoolkit.org/reference-guide/1.10/quickstart/rest.html его для Dojo 1.10, но метод реализации бэкэнда должен быть похожим.

Как только вы внедрили бэкэнд REST, чтобы можно было получать и обновлять данные. Вы можете отправить параметры запроса в бэкэнд REST, установив параметр запроса в сетке.

grid.setQuery({
   param1: 1,
   param2: 2
});

Это заставит хранилище JsonRest использовать url /search/? Param1=1¶m2=2 для загрузки обновленного набора данных в сетку.

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