我有一个简单的网格,其中包含以下选项:
jQuery("#mygrid").jqGrid({
url: 'dataurl.htm',
datatype: 'json',
ajaxSelectOptions: { cache: false }
...
colModel: [
{ name: 'foo', index: 'foo', width: 25, stype: 'select', searchoptions:{ sopt:
['eq'], dataUrl: 'someurl.htm?columnName=foo'}}
]
});
但是,当我致电$("#mygrid").trigger("reloadGrid");
时,它只会从dataurl.htm
加载该表的数据,但不会从foo
链接加载some url.htm
列的数据。
我已经在SO上阅读了类似这样的几个问题,并建议ajaxSelectOptions: { cache: false }
,但这对我不起作用。
someurl.htm
返回<select> <option val=''>something</option></select>
答案 0 :(得分:3)
这是绝对正确的问题! jqGrid的当前实现只有toggleToolbar
方法可以隐藏工具栏,但工具栏本身将创建一次。因此,工具栏的所有属性始终保持不变。
为了解决这个问题,我编写了一个非常简单的小方法destroyFilterToolbar
:
$.jgrid.extend({
destroyFilterToolbar: function () {
"use strict";
return this.each(function () {
if (!this.ftoolbar) {
return;
}
this.triggerToolbar = null;
this.clearToolbar = null;
this.toggleToolbar = null;
this.ftoolbar = false;
$(this.grid.hDiv).find("table thead tr.ui-search-toolbar").remove();
});
}
});
The demo使用该方法。可以在更改某些列的属性后重新创建搜索工具栏。在下面的代码中,可以从搜索工具栏中更改某些文本的语言:
相应的代码如下:
$("#recreateSearchingToolbar").change(function () {
var language = $(this).val();
// destroy searching toolbar
$grid.jqGrid("destroyFilterToolbar");
// set some searching options
$grid.jqGrid("setColProp", "closed",
language === "de" ?
{searchoptions: {value: ":Beliebig;true:Ja;false:Nein"}} :
{searchoptions: {value: ":Any;true:Yes;false:No"}});
$grid.jqGrid("setColProp", "ship_via",
language === "de" ?
{searchoptions: {value: ":Beliebig;FE:FedEx;TN:TNT;IN:Intim"}} :
{searchoptions: {value: ":Any;FE:FedEx;TN:TNT;IN:Intim"}});
// create new searching toolbar with nes options
$grid.jqGrid("filterToolbar", {stringResult: true, defaultSearch: "cn"});
});