2012-03-29 2 views
1

jqGrid와 treeGrid를 함께 사용하고 있습니다. 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 클래스를 설정하여 비활성화 된 것처럼 회색으로 만들 수 있습니다. 어떤 식 으로든 필터링 된 행의 부모를 어떤 식 으로든 표시해야합니다. 트리 형태가 아닌 필터링 된 TreeGrid를 표시하는 옵션이 하나 더 있습니다. 예를 들어 필터링 된 행과 나머지 행 데이터에 대한 경로가있는 추가 열을 표시 할 수 있습니다.

업데이트 : "필터링 된 행의 부모를 표시하는"의미는 다음에 대한 것입니다.

+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

Oleg에게 다시 한번 감사드립니다. –

+0

@ 네후 : 천만에요! – Oleg

+0

Oleg, 나는 마지막 옵션을 분명히 이해하지 못했습니다. "예를 들어 필터 된 행의 경로와 나머지 행 데이터의 경로가있는 추가 열을 표시 할 수 있습니다." –