Combo

Combo Basic

여러 후보 값 중에서 하나의 값을 선택하는 용도로 사용되는 컴포넌트인
Combo를 이용하여 기능 구현 방법을 제시합니다.

Combo_Basic_0

Combo 데이터 만드는 방법

InnerDataSet

Combo의 데이터는  DataSet를 사용하여 리스트를 표현할 수 있습니다.

Combo_Basic_1

Contents Editor를 사용방법

Combo 데이터로 사용하는 값은 DataSet을 사용하지 않고 Contents Editor 통해서도 만들 수 있습니다.

Combo_Basic_2

Combo의 데이타 생성은 가능한 DataSet을 이용하는 InnerDataSet방법을 사용하는 것이

프로그램 수정 및 개발 방법을 변경할때 유연하게 대처할 수 있습니다

DataSet 바인딩

Combo 은 Dataset과 바인딩 하여 표현할 수 있습니다.

Type

dropdown

검색을 하지 않고 전체 아이템을 리스트에 보여 줍니다.

search

입력된 문자열에 근접한 문자열을 찾아 리스트 창에 선택하여 줍니다.

filter

입력된 문자열을 기준으로 아이템을 필터링하여 리스트 창에 보여줍니다.

검색조건을 만족하는 항목이 하나도 없으면 리스트 창이 열리지 않습니다.

소스 위치

Sample\Combo\np_Combo_Basic.xfdl

Multi Combo

PopupDiv를 이용하여 멀티콤보 만들기

Combo_MultiCombo_0

주요 소스 내용

/*  버튼클릭  */
this.btn_execute_onclick = function(obj:Button,  e:nexacro.ClickEventInfo)
{    
 var nX = system.screenToClientX(this, system.clientToScreenX(obj,16)) - this.pdiv_input.width;
 var nY = system.screenToClientY(this, system.clientToScreenY(obj, 30));  
  
 this.pdiv_input.trackPopup(nX+12, nY); // ComboBox펼치기
}
/*  그리드 셀클릭  */
this.pdiv_input_grd_input_oncellclick = function(obj:Grid, e:nexacro.GridClickEventInfo)
{
 this.pdiv_input.closePopup();
 this.edt_output0.set_value(this.ds_data.getColumn(e.row, "COL0"));
 this.edt_output1.set_value(this.ds_data.getColumn(e.row, "COL1"));
}

Combo에 표현되는 datacolumn을 여러개 표현하는 방법을 알고 싶습니다.

소스 위치

Sample\Combo\np_Combo_MultiCombo.xfdl

Combo 대소문자 구별 없이 filtering하기

filter 메소드를 이용하여 Combo의 여러 후보 값을 입력된 문자열 기준으로 대소문자 구별 없이 필터 처리 되도록 구현할 수 있습니다.

Combo_FilterNoLetter_0

관련 메소드

filter()

Dataset에서 조건 식을 만족하는 레코드만 보이게 하는 메소드

주요 소스 내용

this.btn_execute_onclick = function(obj:Button,  e:nexacro.ClickEventInfo)
{
 var nRow = this.ds_data.rowcount;
 var sData;
 this.ds_data.addColumn("COL2", "STRING", 255);
 for (var i = 0; i < nRow; i++)
 {
   sData = this.ds_data.getColumn(i, "COL1").toString().toUpperCase();
   this.ds_data.setColumn(i, "COL2", sData);
 }
 var sFilter = "COL2.toString().indexOf('" + this.edt_input.value.toUpperCase() + "') >= 0";
  this.ds_data.filter(sFilter); 
}

filter에 사용할 별도의 컬럼을 만들고 데이터을 모두 대문자로 변환하여 처리하였습니다.

Combo, filter

소스 위치

Sample\Combo\np_Combo_FilterNoLetter.xfdl