免费的 jqGrid 加载了预定义的搜索和进一步的搜索行为

Free jqGrid loaded with predefined search and further search behaviour

网格定义:

$grid.jqGrid({
        url:'xtras/Products.php',
        editurl:'xtras/Products.php',
        datatype: "json",
        mtype:'POST',
        colModel:[ 
            {name:'Catalogue',index:'catalogue.Catalogue', width:100, editable:true},
            {name:'Artist',index:'catalogue.Artist', width:170,align:"left", editable:true},
            {name:'Title',index:'catalogue.Title', width:200,align:"left", editable:true},
        ...
        ],
        postData: {
            filters: JSON.stringify({
                groupOp: "OR",
                rules: [
                    { field: "Catalogue", op: "cn", data: "<?php echo $search; ?>" },
                    { field: "Artist", op: "cn", data: "<?php echo $search; ?>" },
                    { field: "Title", op: "cn", data: "<?php echo $search; ?>" }
                ]
            })
        },
        search: true,
        .....
}).jqGrid("navGrid", pagerIdSelector, {add: false, edit: false, refreshstate: "current"},
            {},{},{},
            {multipleSearch:true, sopt:['eq','ne','cn','bw','bn','ge','le','lt','gt'], showQuery: false}, {})

$search 在哪里

$search  = @htmlspecialchars(trim($_REQUEST['search']));

无论是否定义搜索,这都可以正常工作。 但是,在加载网格之后,如果我想执行新的搜索,当我打开搜索框时,它看起来像这样(我期待的是目录、艺术家、标题……):

此时 - 如果我尝试重新定义 shown 下拉菜单 - 搜索将在已经预定义的文本上执行,而不是开始新的搜索。

如果我先删除所有 select,然后按 +

添加新的 select,它只会从头开始搜索

我怎样才能: 从给定的 selects 重新定义搜索或在搜索框打开后重置搜索框中的所有 selects?

有默认值true的搜索选项loadDefaults。它通知 jqGrid 从 postData.filters 加载过滤器。如果我正确理解你的问题,那么你应该在 multipleSearch:true.

附近包含 loadDefaults: false 选项

顺便说一下,我发现很难阅读 navGrid 参数,因为大量参数的值为 {}。免费的 jqGrid 允许使用您可以在 navGridfilterToolbar 中使用的相同搜索选项来定义 jqGrid 的 searching 选项。如果允许减少navGrid的参数个数。另外免费的 jqGrid 可以 create 寻呼机的 div 如果你想使用 pager: true 并且你可以跳过 navGrid, [=24] 中的寻呼机参数=] 和 navButtonAdd。换句话说,您可以将代码重写为以下内容

$grid.jqGrid({
    url:'xtras/Products.php',
    editurl:'xtras/Products.php',
    datatype: "json",
    mtype:'POST',
    colModel:[ 
        {name:'Catalogue',index:'catalogue.Catalogue', width:100},
        {name:'Artist',index:'catalogue.Artist', width:170},
        {name:'Title',index:'catalogue.Title', width:200},
    ...
    ],
    cmTemplate: {editable: true},
    postData: {
        filters: JSON.stringify({
            groupOp: "OR",
            rules: [
                { field: "Catalogue", op: "cn", data: "<?php echo $search; ?>" },
                { field: "Artist", op: "cn", data: "<?php echo $search; ?>" },
                { field: "Title", op: "cn", data: "<?php echo $search; ?>" }
            ]
        })
    },
    search: true,
    searching: {
        multipleSearch: true,
        loadDefaults: false,
        sopt: ['eq','ne','cn','bw','bn','ge','le','lt','gt'],
        showQuery: false
    },
    navOptions: { add: false, edit: false, refreshstate: "current" }
    .....

}).jqGrid("navGrid");