2014-05-14 2 views
0

는 정의 Store있다 서버에서로드 된 모든 작업 (정렬, 필터링)은 로컬에서 수행됩니다. 열에 표시된 모든 값은 고정 된 값의 집합이므로 필터 유형은 list입니다. 저장소 (myStore)의 값에서 필터를 자동으로 생성 할 수 있습니까?의 ExtJS 그리드 필터


제안 된 해결 :

columns: [{ 
    dataIndex: 'name', 
    text: 'Name', 
    filter: { 
     type: 'string' 
    } 
}, { 
    dataIndex: 'client', 
    text: 'Client', 
    filter: { 
     type: 'list' // caused the filtering to be disabled 
    }   
}, { 
    dataIndex: 'domain', 
    text: 'Domain' 
}] 
+0

[Ext Grid MultiSearch Plugin] (http://extjs.eu/software/ext-grid-multisearch-plugin/)을보십시오. 필터 필드는 매우 구성 가능하므로 위의 내용은 2 ~ 3 줄의 코드로 이루어집니다. – Saki

+0

@Saki는 참고로 감사합니다. 사이트를 개선하고 대화 속도를 높이는 방법을 제안 할 수 있다면이 플러그인의 기능을 읽은 후 실제로 문제를 해결할 것으로 확신하지 않기 때문에 실제 코드 샘플을 보는 것이 좋습니다. –

+0

곧 플러그인을 사용하는 방법에 대한 스크린 캐스트를 게시합니다. 계속 지켜봐. – Saki

답변

1

그래서 myStore이 저장소를 제공? 그렇다면, 여기에이 방법을 추가

,getUniqueValues:function(field) { 
    var me = this 
     ,results = {} 
    ; 

    me.each(function(record){ 
     var value = record.get(field); 
     results[value] = {}; 
     results[value][field] = value; 
    }); 

    return Ext.Object.getValues(results); 
} // eo function getUniqueValues 

지금, (가 원격 인 경우) myStore로드 이벤트를 수신하고의 고유 한 값을 원하는 필드 이름을 전달 리스너에 getUniqueValues를 호출합니다. 고유 한 값 배열을 가짐으로써 원하는대로 할 수 있습니다 (예 : 콤보로로드, 격자 필터 목록으로 사용 등

물론 메서드 자체를 변경하여 반환 된 데이터의 형식을 수정할 수 있습니다.

1

귀하의 질문이 조금 애매 특히 당신이 그리드의 저장소로 myStore을 언급하고 있지만 그리드 코드에서 다시 다음 store 등을 사용하고 이후 optionStore이 있는데, 어디에도 정의되어 있지는 않습니다 (ExtJS 예제에서 가져온 것 같습니다).

어쨌든 귀하의 질문을 정확하게 이해하면 ListFilter을 그리드의 데이터를 기반으로 자동으로 채우려는 것이 좋습니다. options 또는 store 구성 속성의 설명서를 참조

:

하면 상점이나 옵션을 모두 지정 후 선택 목록이 자동으로 지정된 dataIndex 필드의 모든 고유 값에서 채워 입니다 필터 호출을 처음 저장할 때.

이 원하는 결과를 달성하기 위해 이러한 속성을 생략하기에 충분해야합니다

columns: [{ 
    dataIndex: 'option', 
    text: 'Option', 
    filter: { 
     type: 'list' 
     // omit 'options' and 'store' configuration 
    } 
}] 

편집 : 그리드 오른쪽의 fiddle

+0

감사합니다. Matt. 그것을 시도했지만 작동하지 않습니다. 실제로 그것은 필터링을 전혀 사용하지 않도록합니다. 내가 사용한 코드로 질문을 편집했습니다. –

+0

실제로 ExtJS 4.2 라이브러리에서 예제를 수정하여 시도해 보았습니다. 불행히도 SenchaFiddle/JSFiddle에는 그리드 필터 플러그인을위한'Ext.ux. *'클래스가 포함되어 있지 않기 때문에 나는 일하는 바이올린을 만들 수 없었다. 내가 어떻게 든 일하는 바이올린을 만들 수 있는지 내일 확인해. – matt

+0

아담, 나는 나의 대답을 편집하고 위에 설명 된대로 행동을 보여주는 [바이올린] (http://jsfiddle.net/6wKSG/)을 제공했습니다. – matt