2013-04-22 3 views
3

Я создал сетку jqGrid с выпадающим списком, этот список (из-за ограничений dev) должен быть загружен один раз, так что все возвращенные данные могут быть отфильтрованы, все это классно до сих пор ,Обработчики событий JQGrid для пользовательских поисковых запросов

Проблема возникает при изменении выпадающего списка, хотя большая часть фильтрации и поиска выполняется на стороне клиента, мне нужен выпадающий список, чтобы вызвать вызов, который обновит страницу, используя недавно добавленный параметр из выпадающего списка.

Я приложил раздел кода, который строит поиск в панели инструментов, но я понятия не имею, как добавить функциональность, чтобы поймать обработчик события при изменении значения выбора, в этом только экземпляре мне нужен нестандартный код для быть выполнены - например, функция callNewData()

colNames:["Rent Due Date ","Tenant","Description","Address","Payment Ref.","Rent  Amount","Outstanding","Amount  Received","Confirm?","tenancyID","tenantID","rentID","existingRent"], 
    colModel :[{ 
     name:"rentDueDate", 
     index:"rentDueDate", 
     align:"center", 
     width:"130", 
     search:true, 
     stype:"select", 
     searchoptions: { 
      value: "all:All;due:Due;overdue:Overdue;future:+1 Week;" , 
      defaultValue:"due" 
     } 
    }, 

Где в параметры поиска (или в colModel) я бы поставил обработчик события OnChange?

+0

Как вы меняете значения в раскрывающемся списке ныне? – Mark

ответ

4

Извините, но непонятно, какова ваша точная проблема. Если пользователь выберет опцию из раскрывающегося списка, автоматически автоматически загрузится jqGrid . перезагрузите сетку фильтром, который выбрал пользователь. Если вы используете локальный datatype, то фильтрация будет выполняться jqGrid внутренне. Если вы используете datatype: "json" или datatype: "xml" без использования loadonce: true, тогда jqGrid отправит запрос на сервер, добавив информацию о фильтре в список стандартных параметров.

Если вам действительно нужно обрабатывать onChange событие в <select>, то вам необходимо определить обработчик события change внутри dataEvents:

searchoptions: { 
    value: "all:All;due:Due;overdue:Overdue;future:+1 Week;", 
    defaultValue: "due", 
    dataEvents: [ 
     { 
      type: "change", 
      fn: function (e) { 
       // some code which will be executed onChange 
      } 
     } 
    ] 
} 
+0

Привет, его взяли whlle, чтобы посмотреть, но результат заключается в том, что если дата выбрана из drop [вниз на панели инструментов, тогда сетка должна быть перезагружена со стороны сервера, а не из сохраненных данных JSON, любая другая фильтрация/поиск может выполняться со стандартной клиентской стороной. Это мешает поиску/фильтру, вызывая поиск на стороне клиента, если он выбран, я уверен, что приведенный выше пример dataevent сделает это, поскольку я могу просто сбросить запрос с новой датой и перезагрузить страницу, любой столбец будет действовать нормально – Jimmyborofan

+0

@Jimmyborofan : Можно косвенно ссылаться на ваш последний комментарий, что код, который вы разместили в своем вопросе **, не содержит происхождение вашей проблемы **. Кажется, что вы используете 'loadonce: true', но используете его неправильно. Вы должны добавить текст своего вопроса с большим количеством кода JavaScript. Важно, чтобы вы описали дополнительно, какие функции вы реализовали на стороне сервера: сортировка, пейджинг, фильтрация. Также важно, чтобы вы указали, насколько велики полные данные (все выгруженные, не отфильтрованные), которые вы показываете в jqGrid (100, 1000, 10000, 100000 или более). – Oleg

+0

HI благодарит за ответ после многих попыток, у меня кончилось время, и мне пришлось переместить обновление за пределы jQgrid, что сильно засасывалось, потому что через десять минут после того, как я совершил, я просмотрел его после обзора кода и увидел, как использовать dataevent правильно, что было немного раздражающе, на данный момент я был добавлен в другой проект, но в моем списке вещей, чтобы вернуться назад;) – Jimmyborofan

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