2012-03-29 10 views
1

私はtreeGridでjqGridを使用しています。 filterToolbarを追加しました。私はサーバーコールをする代わりに、ローカルで検索したいと思っています。 treegrid docsと言うと、"グリッドを初期化するとデータが読み込まれると、そのデータ型は自動的にローカルに設定されます。"(これはTreeGridに関するものです)treeGridがインストールされているjqGridでローカルで検索することは可能ですか

したがって、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}); 

はそれが可能であっても上の任意のヘルプまたは任意のポインタをお願い申し上げ実装しますか?

答えて

2

TreeGridフィルタリングの最も大きな問題は、明確ではないことです。フィルタを適用した結果、TreeGridに表示する内容はです。グリッドにフィルタを適用する標準的な動作は、から、フィルタリングされていないすべての行を削除します。 TreeGridの場合、そのような動作は間違っています。近い質問にanswerでは、私は問題を説明しようとした。

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

UPDATED:「フィルタリングされた行の親を表示する」とは、次のことです。

+root    123 
    +testchild1 32 
     test1  4 
    +child2  30 
     test2  7 

のようなTreeGridを用意して、 "test"というテキストの最初の列をフィルタリングします。ケースでは、テキスト「テスト」

+testchild1 32 
     test1  4 
     test2  7 

を持っている行だけを表示することが間違っているだろうが、いくつかのシナリオでは、ルート要素までのフルパスで上記の行を表示するのに十分であるかどう:

root\testchild1   32 
root\testchild1\test1  4 
root\testchild1\test2  7 

この場合、情報はTreeGridの代わりにグリッドに表示されます。

他のケースでは、葉の中の検索だけが意味を持つことができます。その場合、TreeGridフォームに実際に結果を表示することができますが、一般的なケースではありません。

+0

再びオレグに感謝します。 –

+0

@ねー:ようこそ! – Oleg

+0

Oleg、私はあなたの最後の選択肢を明確に理解していませんでした。たとえば、フィルタリングされた行と残りの行のデータのパスを含む追加の列を表示できます。 –

関連する問題