постоянные фильтры в сетке - PullRequest
1 голос
/ 10 февраля 2010

Я бы хотел сохранить фильтры, примененные к сетке при обновлении страницы. Не могли бы вы помочь мне в этом.

Спасибо.


Вот код, который отправляет данные фильтра на веб-сервис

 Ext.extend(Ext.ux.AspWebServiceProxy, Ext.data.DataProxy,       
 {
  load: function(params, reader, callback, scope, arg) {                 
  var userContext = {
               callback: callback,                   
               reader: reader,
               arg: arg,
               scope: scope
           };

  var proxyWrapper = this;

           //debugger;
           //Handles the response we get back from the web service call
           var webServiceCallback = function(response, context, methodName) {
               proxyWrapper.loadResponse(response, userContext, methodName);
           }

           var serviceParams = [];
           var filters = {};
           //Convert the params into an array of values so that they can be used in the call (note assumes that the properties on the object are in the correct order)
           for (var property in params) {
               if (property.indexOf("filter[") == 0) {
                   filters[property] = params[property];
               }
               else {
                   serviceParams.push(params[property]);
               }
               //console.log("Property: ", property, "Value: ", params[property]);
           }
           serviceParams.push(filters);

           //Add the webservice callback handlers
           serviceParams.push(webServiceCallback);
           serviceParams.push(this.handleErrorResponse);

           //Make the actual ASP.Net web service call
           this.webServiceProxyMethod.apply(this.webServiceProxy, serviceParams);
       },

       handleErrorResponse: function(response, userContext, methodName) {
           window.location.reload();
           //                               Ext.MessageBox.show({
           //                                       title: 'Error',
           //                                       msg: response.get_message(),
           //                                       buttons: Ext.MessageBox.OK,
           //                                       icon: Ext.MessageBox.ERROR
           //                                   });
           //alert("Error while calling method: " + methodName + "n" + response.get_message());
       },

       loadResponse: function(response, userContext, methodName) {
           var result = userContext.reader.readRecords(response);
           userContext.callback.call(userContext.scope, result, userContext.arg, true);
       }

   });

Ответы [ 2 ]

1 голос
/ 17 ноября 2015

Чтобы сохранить фильтры на сетке, вы можете использовать куки, здесь вы можете найти некоторую помощь:

proxy: new Ext.data.HttpProxy({
        url: (local ? url.local : url.remote),
        method: 'GET',
        listeners:{
            beforeload : function(dataproxy,param) {
                if(param.searchConditions != undefined && param.searchConditions != '[]') {                     
                    Ext.util.Cookies.set('SearchConditions',param.searchConditions);
                }

            }
        }
    })

В приведенном выше примере вы можете обнаружить, что мы устанавливаем JSONArray «searchConditions» в cookie. Теперь давайте посмотрим, как вернуть это «searchCondition» при загрузке вашей Grid.

store.load({
            params:{
                start:0,
                limit: 50,
                searchConditions:JSON.parse(Ext.util.Cookies.get('SearchConditions'));
            }
        });

Здесь просто нужно просто передать значение параметра "searchCondition" как значение, сохраненное в Cookie. Надеюсь, что приведенный выше пример полезен. Пожалуйста, прокомментируйте любую помощь.

1 голос
/ 10 февраля 2010

Включите глобальный менеджер состояний Ext JS (где вы установили Ext.BLANK_IMAGE_URL).

Ext.state.Manager.setProvider(new Ext.state.CookieProvider());

Изменения, внесенные пользователем в некоторые компоненты, теперь будут сохраняться в файле cookie, который будет сохраняться при разных запросах. Если вам нужно сохранить дополнительные пользовательские данные, вы можете сделать это, используя Ext.state.Manager.set и Ext.state.Manager.get. Состояние настраивается для отдельных компонентов.

У Саки есть хороший пример .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...