본문 바로가기

Programming/Websquare

조회된 데이터리스트 분류 단계별 필터링 예시

728x90

LinkedDataList.setColumnFilter를 활용

dataCollection

<w2:dataCollection baseNode="map">
    <w2:dataMap baseNode="map" id="dma_SearchParam">
        <w2:keyInfo>
            <w2:key id="largeCategory" name="대분류" dataType="text"></w2:key>
            <w2:key id="mediumCategory" name="중분류" dataType="text"></w2:key>
            <w2:key id="item" name="항목" dataType="text"></w2:key>
        </w2:keyInfo>
    </w2:dataMap>
    <w2:dataList baseNode="list" repeatNode="map" id="dlt_codes" saveRemovedData="true">
        <w2:columnInfo>
            <w2:column id="largeCategory" name="대분류" dataType="text"></w2:column>
            <w2:column id="largeCategoryName" name="대분류명" dataType="text"></w2:column>
            <w2:column id="mediumCategory" name="중분류" dataType="text"></w2:column>
            <w2:column id="mediumCategoryName" name="중분류명" dataType="text"></w2:column>
            <w2:column id="item" name="항목" dataType="text"></w2:column>
            <w2:column id="itemName" name="항목명" dataType="text"></w2:column>
        </w2:columnInfo>
    </w2:dataList>
    <w2:linkedDataList id="linked_dlt_codes" baseNode="vector" repeatNode="map" bind="dlt_codes">
    </w2:linkedDataList>
    <w2:linkedDataList id="linked_dlt_codes2" baseNode="vector" repeatNode="map" bind="dlt_codes">
    </w2:linkedDataList>
</w2:dataCollection>

script

removeColumnFilter를 넣지 않으면 필터 조건이 계속 and 로 추가되는 것 같음

newValue가 "" 일때는 전체로 처리

아래 분류들도 filter를 적용하기 위해 switch문 중간에 break;를 뺌

// 초기화 부분
sch_largeCategory.setNodeSet("data:dlt_codes", "largeCategoryName", "largeCategory");
sch_wkspCd.setNodeSet("data:linked_dlt_codes", "mediumCategoryName", "mediumCategory");
sch_wkgdCd.setNodeSet("data:linked_dlt_codes2", "itemName", "item");
dma_SearchParam.bind('onmodelchange', scwin.fn_dma_searchParam_onmodelchange);
..
scwin.fn_dma_searchParam_onmodelchange = function(info){
  var key = info.key;
  var oldValue = info.oldValue;
  var newValue = info.newValue;

  switch (key) {
  case "largeCategory":
    linked_dlt_codes.removeColumnFilter(key);
    linked_dlt_codes.setColumnFilter({type:'func', colIndex:key
    	, key:function(e){return newValue == "" || newValue == e;}, condition:"and"});
  case "mediumCategory":
    linked_dlt_codes2.removeColumnFilter(key);
    linked_dlt_codes2.setColumnFilter({type:'func', colIndex:key
    	, key:function(e){return newValue == "" || newValue == e;}, condition:"and"});
    break;
  default:
    break;
  }
}

 

728x90