免费的 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 允许使用您可以在 navGrid
或 filterToolbar
中使用的相同搜索选项来定义 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");
网格定义:
$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 允许使用您可以在 navGrid
或 filterToolbar
中使用的相同搜索选项来定义 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");