2013-04-11 4 views
2

js 4.2), и у меня есть некоторые проблемы, когда я управляю панелью инструментов на сетке, которая использует прокси (ajax).Как правильно управлять PagingToolbar в Ext-js 4.2?

this.grid = new Ext.create('Ext.grid.Panel',{ 
      region  : 'center', 
      loadMask : true, 
      layout  : 'fit', 
      store  : 'Contenedores', 

      tbar: [ 
        { text: 'Exportar Excel' }, 
        '->', 
        { text:'Buscar',  handler: this.buscar, scope: this}, 
        '-', 
        { text:'Limpiar', handler: this.limpiar, scope: this} 
      ], 
      columns : [], 

      bbar : new Ext.create('Ext.toolbar.Paging',{ 
       store: 'Contenedores', displayInfo: true, 
       displayMsg : 'Registros {0} - {1} de {2}', 
       emptyMsg : 'No hay registros' 
      }) 
     }); 

проблемы, у меня есть:

  • Когда я взываю к store.load(), pagingToolbar не блокирует, так что я могу нажать на следующей странице, и когда сетка Я загружаю неверную страницу на pagingtoolbar. В Ext js 3, когда I se loadMask: true в сетке, pagingToolbar блокируется при вызове store.load().
  • Если я нахожусь на странице типа 2 или выше, и я звоню в store.load(), pagingToolbar не обновляет после загрузки текущую метку страницы до 1.
  • Мне нужно реализовать чистую/кнопку сброса, так как я могу очистить метки на панели pagingtoolbar.

благодарит заранее.

+0

Ответ был выполнен для вас? Если да, отметьте как ответ или укажите причину, по которой это не сработало. – James

+0

Спасибо за вашу помощь, но мне нужно вызвать store.load (* с параметрами *), и я нашел для себя, что могу сделать это с помощью: this.grid.store.loadPage (1, {params: {..}}), но мне все еще нужно найти способ очистить панель pagingtoolbar, когда я использую мою кнопку очистки/повтора (пункт 3). Еще раз спасибо за помощь: D – Pregunton

+0

обновленный ответ, чтобы показать пример настройки параметров прокси-сервера магазина перед вызовом moveFirst() на панели инструментов пейджинга – James

ответ

2

Если ожидаемый результат выполнения store.load() состоит в том, чтобы перейти на первую страницу в вашей сетке, вы можете просто позвонить moveFirst() на панели инструментов поискового вызова, а не напрямую загружать в магазин. Пример:

var pagingtb = Ext.create('Ext.toolbar.Paging',{ 
       store: 'Contenedores', 
       displayInfo: true, 
       displayMsg : 'Registros {0} - {1} de {2}', 
       emptyMsg : 'No hay registros' 
      }); 

this.grid = Ext.create('Ext.grid.Panel',{ 
      region  : 'center', 
      loadMask : true, 
      layout  : 'fit', 
      store  : 'Contenedores', 

      tbar: [ 
        { text: 'Exportar Excel' }, 
        '->', 
        { text:'Buscar',  handler: this.buscar, scope: this}, 
        '-', 
        { text:'Limpiar', handler: this.limpiar, scope: this} 
      ], 
      columns : [], 

      bbar : pagingtb 
     }); 

pagingtb.moveFirst(); 

Кроме того, вам не нужно ключевое слово new перед тем Ext.create(...) ->create() возвращает экземпляр указанного класса.

Если вам нужен ваш магазин для отправки дополнительных параметров, вы можете установить их на прокси-сервер, прежде чем звонить moveFirst() или doRefresh() на свою панель инструментов. Пример:

store.getProxy().extraParams.someParameter1 = 'some value'; 
store.getProxy().extraParams.someParameter2 = 'another value'; 
pagingtb.doRefresh(); // or .moveFirst() if you want the grid to 
         // move to the first page after load 
+0

Спасибо, это решило другую проблему для меня, которая была «extjs pagingtoolbar next button not working» Мне пришлось позвонить этот moveFirst, чтобы понять, что это было на первой странице, возможно, есть более простой способ, но это сработало для меня, спасибо –

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