컬럼 타입이 combo인 SBGrid의 행을 중심으로 연관성이 있는 범주내에 찾는 멀티 콤보 필터를 제공합니다.


요약

컬럼 타입이 combo인 SBGrid의 특정 컬럼에 필터링 기능을 설정합니다.

입력값

Number : 필터링 할 컬럼의 Index


Array : 필터링된 리스트



예)datagrid1.setComboFiltering (nCol,arrComboFilteringInfoList);

상세설명

nCol의 값은 필터링 할 컬럼의 인덱스 번호이고, nCol번째 컬럼의 타입이 combo이면
arrComboFilteringInfoList배열에 담긴 조건들을 적용해 필터링 기능을 설정합니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@page language="java"   contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
<head>
	<meta content="IE=9" http-equiv="X-UA-Compatible">
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>SoftBowl SBGrid Example</title>
	<script type="text/javascript" src="../../kr/co/softbowl/js/Library/json-minified.js"></script>
	<script type="text/javascript" src="../../js/jquery-1.7.2.min.js"></script>
	<script type="text/javascript" src="../../kr/co/softbowl/js/Library/json2.js"></script>
		
	<script type="text/javascript" src="../../kr/co/softbowl/SBGrid.js"></script>
	
	<script type="text/javascript" src="../../js/DATA_JSON_eval3.js"></script>
		
	<script type="text/javascript">			
		SBGrid.DEF.DOMAIN = "../../";
	<script>
	
	<script type="text/javascript">
		var datagrid1;
		
		$(document).ready(function(){
			__createElements();
		});
		
		function __createElements (){
	
			var obJson = {
							    "strParentId":"sbGridArea",
							    "strId": "datagrid1",
							    "strCaption": "시/도^군/구^동/면",
							    "strColWidth": "150, 150, 150",
							    "strJsonRef": "gridData",
							    "strDataHeight":"29",
							    "strExplorerbar": "sortshow",
							    "strBackColorAlternate" : "#f7f7f7",
							    "strStyle": "width:100%; height:480px; "
				};
	
			datagrid1 = createSBDataGrid(obJson);
	
			var objJsonColumn = [
								{
									"id": "col1","type": "combo",
									"ref": "city",
									"strJsonNodeSet": "JSONcomboData_city",
									"strLabelRef": "label",
									"strValueRef": "value"
								},
								{
									"id": "col2",
									"type": "combo",
									"ref": "gu",
									"strJsonNodeSet": "JSONcomboData_gu",
									"strLabelRef": "label",
									"strValueRef": "value",
									"bIsComboFiltering" : true	//ComboFiltering을 위해 'bIsComboFiltering'속성을 true로 설정한다.
								},
								{
									"id": "col3",
									"type": "combo",
									"ref": "dong",
									"strJsonNodeSet": "JSONcomboData_dong",
									"strLabelRef": "label",
									"strValueRef": "value",											
									"arrComboFilteringInfoList" : 	[
																		{
																			strAttrName:"code",
																			strAttrValue:"1"
																		},
																		{
																			strAttrName:"code",
																			strAttrValue:"3"
																		}
																	],
									//필터링 할 조건들을 'arrComboFilteringInfoList' 속성을 통해 설정할 수 있다.
									//조건들을 object타입으로 여러 개 설정이 가능하다.
									//설정하지 않고 나중에 SBGridID.setComboFiltering() API를 통해 동적으로 설정할 수도 있다.
									"bIsComboFiltering" : true
								}
						];
			datagrid1.createColumns(objJsonColumn);	//createColumns(objJsonColumn); SBGrid의 column 생성에 필요한 속성들의 집합인 JSON 오브젝트를 파라미터를 갖는 column 생성 함수
					
			datagrid1.addEventListener("onvaluechanged","eventProcess","","");//cell의 값이 변경되면 발생
			datagrid1.addEventListener("onentercell","eventProcess","","");//cell이 선택되면 발생	
			
		}
		function eventProcess(event){
			var targetGrid = eval(event.currentTarget);
			var nRow = targetGrid.row;	//마우스로 클릭한 행의 인덱스 번호
			var nCol = targetGrid.col;	//마우스로 클릭한 열의 인덱스 번호
			
			if(event.name == 'onvaluechanged'){
				if(nRow >= targetGrid.fixedRows){//caption을 표시하는 부분이 아닌 data영역에 대한 변경 사항인 경우
					if(targetGrid.getRefOfCol(nCol) == "city"){//'시도'에 해당하는 cell의 data가 변경된 경우
						targetGrid.setTextMatrix(nRow,targetGrid.getColRef("gu"),"");	//구 data를 초기화
						targetGrid.setTextMatrix(nRow,targetGrid.getColRef("dong"),"");	//동 data를 초기화
					}
					else if(targetGrid.getRefOfCol(nCol) == "gu"){//'구'에 해당하는 cell의 data가 변경된 경우
						targetGrid.setTextMatrix(nRow,targetGrid.getColRef("dong"),""); //동 data를 초기화
					}
				}					
			}
			else if(event.name == 'onentercell'){
				if(targetGrid.getRefOfCol(nCol) == "gu"){//'구'에 해당하는 cell을 선택 시
					var arrComboFilteringInfoList =[];	//필터링 할 조건 data들을 넘겨주기 위해 배열을 선언
					var objComboFilteringInfo = {};		//필터링 조건들은 'object' 타입이여야 함
					
					//SBGridID.getTextMatrix(nRow, nCol); -> value값을 가져온다.
					//SBGridID.labelMatrix(nRow, nCol); -> label값을 가져온다.
					var strCityData = targetGrid.labelMatrix(nRow, targetGrid.getColRef("city"));
					if(strCityData == '서울'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "1";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
						//SBGridID.setComboFiltering(nCol, arrComboFilteringInfoList); -> nCol번째 컬럼의 타입이 combo이면 arrComboFilteringInfoList배열에 담긴 조건들을 적용해 필터링 기능을 설정한다.
						//nCol -> 필터링 할 컬럼인 인덱스 번호(컬럼타입이 combo인 경우에만 설정된다.)
						//arrComboFilteringInfoList -> 필터링 조건 정보들의 집합
													
							[
								{
									strAttrName:"code",
									strAttrValue:"1"
								},
								{
									strAttrName:"code",
									strAttrValue:"3"
								}
							]								
							//createColumns()시 콤보에 표시할 항목정보를 "strJsonNodeSet":"JSONcomboData_gu"로 표시했다면  'strAttrName'으로 지정한 'code'를 이용해 'JSONcomboData_gu[0].code'처럼 각 항목들의 'code'값이 'strAttrValue'와 같은 지를 조사하여 같은 항목들만 표시 할 수 있도록 지정한다.
						
					}
					else if(strCityData == '대전'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "2";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strCityData == '대구'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "3";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strCityData == '부산'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "4";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					arrComboFilteringInfoList = objComboFilteringInfo = null;
				}
				else if(targetGrid.getRefOfCol(nCol) == "dong"){//'동'에 해당하는 cell을 선택 시
					var arrComboFilteringInfoList =[];
					var objComboFilteringInfo = {};
					var strGuData = targetGrid.labelMatrix(nRow, targetGrid.getColRef("gu"));
					if(strGuData == '서초구_서울'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "1";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '강남구_서울'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "2";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '광진구_서울'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "3";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '대덕구_대전'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "4";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '유성구_대전'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "5";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '수성구_대구'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "6";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '남구_대구'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "7";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '동래구_부산'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "8";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '금정구_부산'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "9";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					else if(strGuData == '사상구_부산'){
						objComboFilteringInfo.strAttrName = "code";
						objComboFilteringInfo.strAttrValue = "10";
						arrComboFilteringInfoList[0] = objComboFilteringInfo;
						targetGrid.setComboFiltering(nCol,arrComboFilteringInfoList);
					}
					arrComboFilteringInfoList = objComboFilteringInfo = null;
				}	
		}
		targetGrid = nRow = nCol = null;
	};
			
	</script>
</head>
<body onload="createElements()" class="sbgrid_body" >
	<div class="topNav">
        <div class="content_group">
            <div id="sbGridArea"></div>
        </div>
    </div>		
</body>
</html>