2013-11-20 5 views
0

У меня есть сетка Enhnaced, подключенная к JSONRest, и у меня она заполняется после запуска сетки. Я смущен тем, как обновлять хранилище Grid при выполнении нового запроса, может ли кто-нибудь помочь?Как обновить улучшенную сетку новыми данными

var store = new JsonRest({ 
     target: "rest/search" 
    }); 

    dataStore = new ObjectStore({ objectStore: store }); 

      /*set up layout*/ 
    var layout = [[ 
     {'name': 'Name', 'field': 'col1', noresize: true, 'width': '100%'}, 
    ]]; 

    /*create a new grid:*/ 
    grid = new EnhancedGrid({ 
     id: 'grid', 
     store: dataStore, 
     structure: layout, 
     selectable: true, 
     selector: false, 
     selectionMode: 'none', 
     escapeHTMLInData: false, 
     autoHeight:true, 


     plugins: { 
      pagination: { 
      pageSizes: ["10", "25", "50"], 
      description: true, 
      pageStepper: true, 
      maxPageStep: 4, 
      defaultPageSize: 5, 
      sizeSwitch: true, 
      position: 'bottom' 
      } 
     } 
     }, document.createElement('div')); 


    grid.setQuery({ 
     term: "term", 
     category: "category" 
     }); 

    grid.startup(); 

Выполнение store.query действительно ударил заднюю часть, но как я заселить сетку с результатами?

store.query({term: "newterm", category: "newcategory"}, 
       { 
       start: 10, 
       count: 10, 
       }).then(function(data){ 





       }); 

ответ

0

Для того, чтобы заполнить сетку, вы не должны выполнять магазина запрос непосредственно - вы должны быть инструктажа сетки использовать в магазин, и он будет запрашивать его сам.

Вы уже, кажется, назначив экземпляр магазина в вызове конструктора DataGrid, и вы правильно окружив его с dojo/data/ObjectStore (с dojox сетки не поддерживает dojo/store), так что мне не понятно, почему вы даже пытаясь выполнить запрос, выходящий за рамки этого. Вы должны увидеть сетевой запрос к своей службе, как только вы вызовете grid.startup().

Если вы видите сетевой запрос, созданный при создании сетки, но вы не видите результатов в сетке, скорее всего, ваша служба фактически не соответствует соглашениям, которые dojo/store/JsonRest ожидает. См. http://dojotoolkit.org/reference-guide/1.9/quickstart/rest.html для получения информации о том, что ожидается в запросах и ответах.

Если вы действительно спрашиваете, как рассказать сетке использовать другой магазин в какой-то момент в будущем, позвоните по телефону grid.setStore(newstore).

+0

Здравствуйте, Ken, спасибо, что ответило ... «Чтобы заполнить сетку, вы не должны выполнять запрос хранилища напрямую - вам следует поручить сетке использовать хранилище, и он будет запрашивать его сам «. Я думаю, что это то, что я делаю в первом блоке кода выше .. Когда сетка запускается, он вызывает мою службу отдыха, успешно передавая необходимые ей параметры (используя метод grid.setQuery()) ... то, что я пытаюсь сделать, - это снова вызвать службу с новыми параметрами и обновить хранилище, прикрепленное к сетке, с результатами этого нового вызова, это то, где я пытаюсь. Как мне это сделать? – blu10

+0

О, хорошо, это похоже на то, что вы хотите, тогда это 'grid.setQuery ({term:" newterm ", category:" newcategory "});' –

+0

привет Ken, используя grid.setQuery второй раз, похоже, не вызывает мой сервер .... Если я настроил сетку и назову ее в первый раз, когда она попадет на сервер, но когда я назову ее второй раз, она не попадет на сервер с моими новыми критериями ... im stumped! – blu10

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