Ответ 1
После того, как вы создали свою сетку, вы можете создать URL-адрес, а затем указать это и вызвать перезагрузку сетки.
jQuery("#list").jqGrid().setGridParam({url : 'newUrl'}).trigger("reloadGrid")
У меня есть все, что работает из учебника, заменяя его моими данными, но это жесткая ситуация. Например, в учебнике, в котором я работаю, у меня есть:
jQuery(document).ready(function(){
jQuery("#list").jqGrid({
url:'http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc',
datatype: 'xml',
mtype: 'GET',
colNames:['ProductID','title', 'description','price','tax','notes'],
colModel :[
{name:'invid', index:'invid', width:55},
{name:'invdate', index:'invdate', width:90},
{name:'amount', index:'amount', width:80, align:'right'},
{name:'tax', index:'tax', width:80, align:'right'},
{name:'total', index:'total', width:80, align:'right'},
{name:'note', index:'note', width:150, sortable:false} ],
pager: jQuery('#pager'),
rowNum:10,
rowList:[10,20,30],
sortname: 'title',
sortorder: "desc",
viewrecords: true,
imgpath: 'http://127.0.0.1/products/public/themes/basic/images',
caption: 'Product List'
});
});
Но URL-адрес жестко закодирован, чтобы вытащить данные. Учебное пособие:
jQuery(document).ready(function(){
jQuery("#list").jqGrid({
url:'example.php',
datatype: 'xml',
mtype: 'GET',
colNames:['Inv No','Date', 'Amount','Tax','Total','Notes'],
colModel :[
{name:'invid', index:'invid', width:55},
{name:'invdate', index:'invdate', width:90},
{name:'amount', index:'amount', width:80, align:'right'},
{name:'tax', index:'tax', width:80, align:'right'},
{name:'total', index:'total', width:80, align:'right'},
{name:'note', index:'note', width:150, sortable:false} ],
pager: jQuery('#pager'),
rowNum:10,
rowList:[10,20,30],
sortname: 'id',
sortorder: "desc",
viewrecords: true,
imgpath: 'themes/basic/images',
caption: 'My first grid'
});
});
Очевидно, что данные в моей строке будут меняться, и я не всегда хочу иметь тот же URL: http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc
И учебник с example.php нуждается в переменных запроса, чтобы он мог получить нужные данные, но они никогда не показывают ту часть, которую я могу найти. Итак, как мне изменить запрос? Как я могу отправлять элементы динамически? Кроме того, кнопки пейджера посылают такие вещи из-за URL-адреса жесткого кода:
Как я могу получить URL-адрес, например /test/right? Как изменить строку запроса?
Спасибо за любую помощь. Надеюсь, это не слишком очевидно. Я нашел setGridParam ({url: newvalue}), но не понял, как его использовать.
Вот документация. Учебник находится в первой части, сверху.
EDIT: Спасибо за ниже. Я пытаюсь понять, как они используют setGridParam в своем учебнике с example.php. У них просто есть example.php, и я не вижу, как они получили переменные запроса от страницы html на странице example.php. setGridParam может быть правильным способом выполнить это, но в этом примере это не так, поэтому я не могу понять, как они передавали начальные переменные запроса.
Я знаю, что могу это сделать:
function gridSearch()
{
$("#list").setGridParam(
{
url:"http://127.0.0.1/products/index.php/mystuff/test/1/5/productname/desc",
page:1
}
).trigger("reloadGrid");//Reload grid trigger
return false
}
<input id="sData" class="EditButton" type="submit" value="Search" onClick="return gridSearch()"/>
и это перезагрузит сетку (я ее протестировал, она работает), но как они отправили элементы в учебнике в первую очередь? Что делать, если я не хочу, чтобы кнопка перезагружалась, а просто передавала переменные для ее первоначальной загрузки?
После того, как вы создали свою сетку, вы можете создать URL-адрес, а затем указать это и вызвать перезагрузку сетки.
jQuery("#list").jqGrid().setGridParam({url : 'newUrl'}).trigger("reloadGrid")
Вы можете попробовать следующее:
jQuery("#list")
.jqGrid()
.setGridParam({
data:'xml',
url : 'newUrl'
})
.trigger("reloadGrid");
Предположим, вы написали jqgrid js-код в js-функции. Таким образом, этот метод динамически передает ваш url в переменной urlGetLst В коде jqgrid мы должны указать некоторые атрибуты:
url: urlGetLst,//(will be dynamic)
//and
loadonce: false
С помощью этой опции он будет каждый раз давать вызов указанному URL и обновлять jqgrid со свежими данными.
И перед вызовом функции загрузки jqgrid с url вызовите/выполните ниже код
$("#jqgridtab").GridUnload();