Есть ли способ программно установить фильтр в jquery jqgrid? - PullRequest
8 голосов
/ 22 июля 2010

У меня есть страница с jqgrid и строкой фильтра вверху.Я хочу иметь ссылку на другую страницу, которая загружает эту сетку, но с фильтром, установленным в одном из столбцов.это можно сделать по ссылке или по совету других людей?

Ответы [ 4 ]

4 голосов
/ 08 января 2012

Я решил это, передав следующий код:

var myfilter = { groupOp: "AND", rules: [] };
myfilter.rules.push({ field: "DataIssuesYN", op: "eq", data: "Y" });

и затем в настройке jqGrid, я перехожу в postData:

  postData: (myfilter) ? { filters: JSON.stringify(myfilter)} : {},
0 голосов
/ 04 августа 2010

Вы можете изменить URL-адрес, который вызывает jqGrid, добавить параметр фильтра в строку запроса, а затем обработать его на стороне сервера.

$(link).click(function(){

$(".mygrid").jqGrid('setGridParam',{url:"server.php?useMyFilter=1"})
});
0 голосов
/ 07 августа 2010

решение 1.

prgramatic в javascript: используйте hideCol и дайте ему имя столбца или набор столбцов [colnames, otherone] объекта jqGrid При наличии одного colname этот столбец будет скрыт под этим именем. Учитывая массив имен столбцов [«name1», «name2»], он будет скрывать столбцы с этими именами, «name1» и «name2», в примере. Имена в colname или colnames должны быть действительными именами из colModel. Помните, что это не изменит ширину столбца, поэтому вам все равно придется изменить colModel Пример:

colModel :[{name:'photo', index:'photo', width:605, sortable:false} , ... ]

<script>
 jQuery("#grid_id").setGridParam({...}).hideCol("photo").trigger("reloadGrid");
</script>

решение 2: решение 1:

jQuery(document).ready(function(){ 
  jQuery("#list").jqGrid({
    url:'json.php?myfilter=columnname',
    datatype: 'json',//or xml?
    mtype: 'GET', //<!--important
    colNames:['Banner','name', 'city','state','Zip Code','Country'],
    colModel :[ 
      {name:'photo', index:'photo', width:605, sortable:false} ,

затем в json.php вы можете извлечь ключ столбца из массива перед его печатью

0 голосов
/ 26 июля 2010

Вы можете попробовать использовать dataInit свойство searchoptions в colModel. Эта функция имеет один параметр elem. $(elem) будет представлять собой input html-элемент, который вы можете инициализировать любыми данными, которые вам нужны.

ОБНОВЛЕНО : попробуйте включить в colModel следующую опцию в описании столбца, для которого вы хотите установить фильтр:

searchoptions:{
    dataInit:function(elem){
        $(elem).val("Test");
        setTimeout(function(){
            $(elem).focus().trigger({ type: 'keypress', charCode: 13 });
        },500);
   }
}

в этом примере я устанавливаю текст «Тест» в качестве фильтра и симулирую нажатие клавиши ввода. Я полагаю, что searchOnEnter установить значение по умолчанию true. Пересылка строки фильтра (например, «Test») очень зависит от структуры вашей программы, но я надеюсь, что это может быть легко реализовано.

ОБНОВЛЕНО 2 : Вероятно, существует другое понимание того, как следует понимать «страницу с jqgrid на ней и строкой фильтра вверху». Я прочитал это как настройку фильтра на панели инструментов фильтра, потому что панель инструментов фильтра будет добавлена ​​в виде строки в верхней части строк сетки. Мое решение в реальном времени можно увидеть здесь Настройка фильтра на панели инструментов фильтра

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