공부/넥사크로

넥사크로 그리드 셀 클릭 시 바인드 된 컬럼명 알아내기

데부한 2024. 9. 1. 23:55
반응형

그리드 셀 클릭 시 발생하는 이벤트(oncellclick)에서 바인드 된 컬럼명을 알아내보자.

this.grd00_oncellclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo)
{};

oncellclick의 이벤트 객체인 GridClickEventInfo를 도움말에 검색해보자.

딱히 바인드 된 컬럼명을 가져올 수 있는 속성은 없다. 그나마 사용할만한 속성은 e.cell과 e.col이다.
클릭할때마다 무슨 값이 나오는지 확인해보자.

this.grd00_oncellclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo)
{
	this.sta00_00.set_text("e.cell : " + e.cell + ", e.col : " + e.col);
};

e.cell과 e.col은 같은 값을 return한다.

우리가 필요한 건 바인딩 된 "컬럼명"이다. 지금 상태로는 클릭한 col의 인덱스만 알 수 있다. 

생각해보면 그리드에 바인딩 할 때 text에 바인딩 컬럼명을 입력한다. 그럼 getCellProperty()를 통해 컬럼값을 가져올 수 있지 않을까 생각했다.

 

클릭된 cell의 text 값을 가져오자.

this.grd00_oncellclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo)
{
	this.sta00_00.set_text(obj.getCellProperty("body", e.cell, "text"));
};

바인드 컬럼명 정보를 가져오긴 하는데 bind:XXX 형식으로 가져온다. 데이터를 정제해주자.

this.grd00_oncellclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo)
{
	this.sta00_00.set_text(this.fnSetBindingColumnId(obj.getCellProperty("body", e.cell, "text")));
};

// sText는 bind:columnId 형태로 넘어온다.
this.fnGetBindingColumnId = function(sText)
{
	// sText에 대한 검증 생략
	var arrText = sText.split(":");
	return arrText[1];
};

 

잘 가져온다!

내가 작성했던 함수 fnGetBindingColumnId() 같이 단순한 방법 말고 정규식을 이용한 방법도 있으니 원하는 방식으로 구현하면 될 것 같다.

반응형