0

我正在尝试使用数据库存储和加载搜索模板。这样做时,我无法更改 tmplLabel、tmplNames、tmplFilters 的值。我正在调用 loadTemplates() 函数,该函数转到服务器以获取数据并存储在 3 个变量中。此函数在 loadComplete() 处被调用。请让我知道如何重置模板的值。我说的是http://www.trirand.com/blog/jqgrid/jqgrid.html

4

1 回答 1

0

搜索模板是一个不常用的有趣功能。要使用它,应该使用tmplNamestmplFilters(可选tmplLabel)这是搜索模块的参数。如果您recreateFilter: true另外使用选项很重要。所以你可以设置选项

var mySearchOptions = {
        // it's just some options which you use
        multipleSearch: true,
        multipleGroup: true,
        recreateFilter: true,
        closeOnEscape: true,
        closeAfterSearch: true,
        overlay: 0
    },
    $grid = $("#grid");

$grid.jqGrid({
    // ... your jqGrid options
    loadComplete: function (data) {
        // you should modify the next line correspond to the place of
        // tmplNames and tmplFilters in the server response
        if (data.tmplNames && data.tmplFilters) {
            mySearchOptions.tmplNames = data.tmplNames;
            mySearchOptions.tmplFilters = data.tmplFilters;
        }
    }
});
$grid.jqGrid('navGrid', {/*navGrid option*/}, {/*Edit options*/}, {/*Add options*/},
    {/*Del options*/},
    mySearchOptions);

我想你已经有正确的代码,但你不使用recreateFilter: true选项。因此,将显示先前打开的搜索对话框,而不是使用当前选项重新创建对话框。

PS 我建议您另外刷新 jqGrid 4.3.2 的源代码(参见答案)。您将拥有更好的键盘支持,可以在搜索对话框中使用searchOnEntercloseOnEscape选项、afterChange回调和自定义控件(参见答案)。

于 2012-04-24T21:54:10.237 回答