1

私はtreeGridでjqGridを使用しています。filterToolbar を追加しました。サーバーを呼び出す代わりに、ローカルで検索したいと思います。ツリーグリッドのドキュメントには、「グリッドを初期化してデータを読み取ると、データ型は自動的にローカルに設定される」と書かれています。(これは 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});

可能であれば、何か助けやポインタをいただければ幸いです。

4

1 に答える 1

2

TreeGrid フィルタリングの最大の問題は、フィルターを適用した結果としてTreeGrid に何を表示すべきかが明確でないことです。グリッドにフィルターを適用する標準的な動作は、フィルター処理されていないすべての行を削除することです。TreeGrid の場合、このような動作は正しくありません。近い質問への回答で、私は問題を説明しようとしました。

実装しようとすることができるのは、フィルタリングされた行のみをある種の強調表示することです (アイデアとしてここを参照してください)。または、フィルタリングされていない行に CSS クラスを設定して、そこを灰色にすることができます (無効のように)。いずれにせよ、フィルタリングされた行の親を何らかの方法で表示する必要があります。もう 1 つのオプションは、ツリー フォームではなく、フィルター処理された TreeGrid を表示することです。たとえば、フィルタリングされた行へのパスと残りの行データを含む追加の列を表示できます。

更新:「フィルタリングされた行の親を表示する」とは、次のことです。次のような 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 フォームに表示できますが、一般的なケースではありません。

于 2012-03-29T11:58:23.450 に答える