【问题标题】:Is it possible to search locally in jqGrid with treeGrid installed是否可以在安装了 treeGrid 的 jqGrid 中进行本地搜索
【发布时间】:2012-03-29 11:26:55
【问题描述】:

我正在将 jqGrid 与 treeGrid 一起使用。我添加了一个过滤器工具栏。我想在本地搜索而不是进行服务器调用。 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});

如果有可能,是否愿意提供任何帮助或任何指示?

【问题讨论】:

    标签: jqgrid treegrid


    【解决方案1】:

    TreeGrid 过滤中最大的问题是不清楚应该在TreeGrid 中显示什么作为应用过滤器的结果。将过滤器应用于网格的标准行为包括删除所有未过滤的行。在 TreeGrid 的情况下,这种行为将是错误的。在answer 中,我试图解释这个问题。

    可以尝试实现的是仅对过滤后的行进行某种突出显示(请参阅here 作为一个想法),或者可以将一些 CSS 类设置为未过滤的行以使其变为灰色(如禁用)。无论如何,必须以某种方式显示过滤行的父级。另一种选择是显示过滤后的 TreeGrid,而不是在 Tree 表单中。例如,打开可以显示一个附加列,其中包含过滤行和其余行数据的路径。

    更新:我的意思是“显示过滤行的父级”是关于以下内容。让我们拥有如下所示的 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 形式显示结果,但这不是常见的情况。

    【讨论】:

    • Oleg,我没有清楚地理解您的最后一个选项,“例如,可以显示一个附加列,其中包含过滤行和其余行数据的路径。”
    • @Nehu:我的意思是这样的:如果您在 Windows 的资源管理器或 Total Commender 中搜索文本,一些文件夹您将在结果窗口中看到 完整路径 到您找到的文件。您可以尝试生成将所有父母的名称除以“/”的网格。我不知道您在 TreeGrid 中显示哪种信息,但是以某种形式显示项目的路径可以解决我描述的问题。我将在我的答案中发布一个示例。
    • @Nehu:我更新了我的答案。您是否想过在 your TreeGrid 的情况下 TreeGrid 过滤的最佳结果是什么?
    • 奥列格,非常感谢您的澄清。这是一个绝妙的主意。但是,对于我目前的情况,我仍在分析什么是最好的过滤方式。
    • @Nehu:就像我之前写的一样,理解什么是最好的(在指定的场景中)显示作为过滤的结果是第一件必须清楚的事情。
    猜你喜欢
    • 1970-01-01
    • 2011-09-24
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多