у меня есть страница с jqgrid на нем со строкой фильтра наверху. Я хочу иметь ссылку на другой странице, которая загружает эту страницу сетки, но набором фильтра на одном из столбцов. это возможно сделать из ссылки, или какие-либо другие люди обходного решения могут предложить?
Вы можете попробовать использовать свойство 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 на ней и строкой фильтра вверху». Я читал это как настройку фильтра на панели инструментов фильтра, потому что панель инструментов фильтра будет добавлена в виде строки в верхней части строк сетки. Мое решение в реальном времени можно увидеть здесь Установка фильтра на панели инструментов фильтра
Вы можете изменить URL-адрес, который вызывает jqGrid, и добавить параметр фильтра в строку запроса, а затем обработать его на стороне сервера .
$(link).click(function(){
$(".mygrid").jqGrid('setGridParam',{url:"server.php?useMyFilter=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 вы можете взять ключ столбца из вашего массива перед его печатью