2014-10-29 2 views
0

У меня есть сетка, в которой хранится QueryReadStore. Он отлично работает, даже виртуальная прокрутка. Проблема заключается в фильтр, когда фильтр, это создает странный URL вроде этого:Фильтрация сетки с QueryReadStore

http://mydomain:8080/project=%3F&1=f&2=i&3=l&4=t&5=e&6=r&7=...... 

И я хочу выглядеть следующим образом:

http://localhost:8080/project?filter={%22op%22:%22contains%22,%22data%22:[{%22op%22:%22string%22,%22data%22:%22username%22,%22isCol%22:true},{%22op%22:%22string%22,%22data%22:%22s%22,%22isCol%22:false}]} 

Вот код, который генерирует сетку и фильтр:

this.grid = new EnhancedGrid({ 
       store: null, 
       structure: this.columns,   
       rowsPerPage: 20, 
       autoHeight: false, 
       plugins: { 
        filter: { 
         closeFilterbarButton: false, 
         isServerSide: true, 
         setupFilterQuery: dojo.hitch(this, function(commands, request){ 
          if(commands.filter && commands.enable){ 
           var gridStoreURL = this.grid.store.url; 

           if(gridStoreURL.indexOf("?") > -1) { 
           request.query = "&filter=" + JSON.stringify(commands.filter); 
           } else { 
           request.query = "?filter=" + JSON.stringify(commands.filter); 
           } 
          }else{ 
          } 
         }), 
         ruleCount: 3, 
         itemsName: "logs", 
         disabledConditions: {anycolumn : this.disabledFilterAnyColumn} 
        } 
       } 
      }, this.idGridContainer); 

создать магазин с помощью этой функции:

var store = dojox.data.QueryReadStore({ 
       url : this.urlBase + agentId, 
       requestMethod:"get" 
      }); 

      this.grid.setStore(store, null, null); 

Когда я использую JsonStore для создания магазина, фильтр работает нормально, но с этим не работает.

Спасибо заранее

ответ

1

Похоже, вы пытаетесь установить магазин запрос в строку, но IIRC QueryReadStore только когда-либо ожидает, что запрос будет передан в качестве объекта, в отличие от JsonRestStore, который может принять его либо путь.

Попробуйте что-то вроде этого вместо этого, для начала, и посмотреть, если он получает вас дальше:

request.query = { filter: JSON.stringify(commands.filter) } 
+0

удивительным! это сработало, спасибо вам большое! – Juanjo

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