существует ли способ программно установить фильтр в jQuery jqgrid?

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

8
задан leora 23 July 2010 в 14:06
поделиться

3 ответа

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

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

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

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

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

0
ответ дан 6 December 2019 в 00:04
поделиться

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

$(link).click(function(){

$(".mygrid").jqGrid('setGridParam',{url:"server.php?useMyFilter=1"})
});
0
ответ дан 6 December 2019 в 00:04
поделиться

решение 1.

программно в javascript: используйте hideCol и дайте ему имя столбца или набор столбцов [colnames, otherone] объект jqGrid, заданный одним colname, скроет этот столбец с этим именем. Учитывая массив имен столбцов [«имя1», «имя2»], он скроет столбцы с этими именами, «имя1» и «имя2», в примере. Имена в 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
ответ дан 6 December 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: