我正在使用jgGrid和treeGrid。我添加了一个filterToolbar。我想在本地搜索而不是服务器调用。 treegrid docs表示,“当我们初始化网格并读取数据时,数据类型会自动设置为本地。”(这与TreeGrid有关)
那么,是否可以使用treeGrid实现本地搜索。我尝试了以下配置,但它导致了服务器调用。
我的配置
var grid = $("#grid").jqGrid({
treeGrid: true,
treeGridModel: 'adjacency',
ExpandColumn: 'businessAreaName',
ExpandColClick : true,
url:'agileProgramme/records.do',
datatype: 'json',
mtype: 'GET',
colNames:['Id'
, 'Business Area'
, 'Investment'
, 'Org'
, 'Goal'
],
colModel:[
/*00*/ {name:'agileProgrammeId',index:'agileProgrammeId', width:0, editable:false,hidden:true},
/*01*/ {name:'businessAreaName',index:'businessAreaName', width:160, editable:false},
/*02*/ {name:'programmeName',index:'programmeName', width:150, editable:false, classes:'link'},
/*03*/ {name:'org',index:'org', width:50, editable:false, classes:'orgHierarchy', sortable : false},
/*04*/ {name:'goal',index:'goal', width:70, editable:false}
],
treeReader : {
level_field: "level",
parent_id_field: "parent",
leaf_field: "leaf",
expanded_field: "expanded"
},
autowidth: true,
height: 240,
pager: '#pager',
sortname: 'id',
sortorder: "asc",
toolbar:[true,"top"],
caption:"TableGridDemo",
emptyrecords: "Empty records",
jsonReader : {
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
cell: "cell",
id: "agileProgrammeId"
}
});
并实施搜索工具栏
$('#grid').jqGrid('filterToolbar', {stringResult: true,searchOnEnter : true});
即使有可能,也会感谢任何帮助或任何指针吗?
答案 0 :(得分:2)
TreeGrid过滤中的最大问题是,作为应用过滤器的结果,不清楚应该在TreeGrid中显示什么。将过滤器应用于网格的标准行为包括删除所有未过滤的行。在TreeGrid的情况下,这种行为是错误的。在answer到最近的问题中,我试图解释这个问题。
可以尝试实现的是仅对过滤后的行进行某种突出显示(请参阅here作为一个想法)或者可以将一些CSS类设置为未过滤的行以使其变为灰色(如禁用)。无论如何,必须以某种方式显示已过滤行的父项。还有一个选项是不以树形式显示已过滤的TreeGrid。 On可以显示一个附加列,其中包含已过滤行和其余行数据的路径。
更新:“显示已过滤行的父级”的含义如下。让我们将TreeGrid视为以下
+root 123
+testchild1 32
test1 4
+child2 30
test2 7
我们过滤了文本“test”的第一列。在这种情况下,仅显示具有文本“test”
的行是错误的 +testchild1 32
test1 4
test2 7
但在某些情况下,如果足以显示带有完整路径的上述行直到根元素:
root\testchild1 32
root\testchild1\test1 4
root\testchild1\test2 7
如果信息将显示在网格而不是TreeGrid中。
在其他情况下,只在叶子中搜索才有意义。在这种情况下,可以在TreeGrid表单中真正显示结果,但这不是常见的情况。