XPLATFORM 101
- Grid > 행/열 합계

그리드 구현하면서 가장 골치 아픈 기능이죠. 기본으로 제공하지 않는다면
정말 요구사항도 많고 어려운 기능입니다.

엑스플랫폼에서는 summary 기능을 기본으로 제공하고 있네요.
기본적으로는 그리드 가장 마지막 영역에 생성이 되고 필요시 summarytype을 변경해서 상단으로 올릴 수 있습니다.


그리드 에디터에서 'Add Summ Row'로 추가하면 되는데
그냥 추가하면 합계가 짠 나오는건 아니고 해당 컬럼에 텍스트 속성에
expr:getSum("col4") 와 같이 식을 추가해주어야 합니다.

사실...중요한 것은 Summary Row가 아니라 getSum() 메소드입니다.
실제 합계를 처리하는 것은 이 부분이기 때문이죠.

데이터셋에서 제공하는 연산식은 합계만 있는건 아닙니다.
대표적인 것만 살펴보면 
getAvg(), getMax(), getMin()을 제공하고
좀 더 세밀한 작업을 위해 getCaseAvg(), getAvgNF()와 같은 기능도 제공합니다.

그리고 각 줄에 대한 합계를 처리하고자 않다면 컬럼 하나를 추가하고
expr:col4+col5 와 같은 식으로 추가할 수 있습니다.

http://cafe.naver.com/xplatform101/162 
XPLATFORM 101
- Grid > Remove Line

그림만 보면 앞에서 이야기한 머지(병합) 기능을 사용한거 아닌가 싶은데
실제 병합은 아니고 마치 그런것처럼 보이게 하는 효과입니다.


원하는 셀에서 line 항목에 다음과 같은 표현식을 추가합니다.
데이터셋에 LINE_REMOVE_COL 항목에 몇번째 컬럼에 효과를 줄지 지정이 되어 있습니다.
그래서 사용되는 함수가 좀 복잡해진거네요.
EXPR(fn_SetGridLine(1, getColumn(currow, 'LINE_REMOVE_COL')))
실제 사용되는 함수는 다음과 같습니다.
function fn_SetGridLine(colIdx, strCol)
{

var arrCol = strCol.split(",");
for (var i=0; i<arrCol.length; i++) {
if (arrCol[i] == colIdx) {
return "1 solid #ccccccff,0 solid #ffffffff,1 solid #ccccccff,1 solid #ccccccff";
}
}
return "";
}
line 속성은 top, right, left, bottom 항목에 적용됩니다.
1개만 사용하면 전체 boader를 적용하고
2개면 수평, 수직, 3개면 top, 수직, bottom 순으로 적용됩니다.
예제에서는 right 속성을 0 으로 지정했기 때문에 라인이 보이지 않게 됩니다.
하지만 보이지 않을뿐 실제로는 라인이 존재하는 것이지요.

동적으로 간단하게 병합 효과를 만들때 유용하게 사용할 수 있겠네요.

http://cafe.naver.com/xplatform101/161 
XPLATFORM 101
- Grid > Cell 기능

그리드에 관한 몇몇 기능을 소개합니다.

선택영역
- 일반적으로 그리드는 행 단위로 선택을 합니다.
하지만 필요에 따라 셀 단위 또는 원하는 영역을 선택할 필요가 있을 수 있습니다.
그래서 엑스플랫폼 그리드에서는 selecttype 이라는 속성을 제공합니다.
그리드내에서 선택하는 방식을 지정하는 속성입니다.

기본값은 row 입니다.
그리고 제공되는 속성은 currow, row, cell, area, multirow, multiarea, treecell, multitreecell 이 있습니다.

기본속성인 row와 currow의 차이점은 데이터셋의 Select 속성과의 관계입니다.
row의 경우에는 선택시 데이터셋에서 rowposition에 해당하는 Select 에 영향을 미칩니다.
하지만 currow의 경우에는 데이터셋의 rowposition에 해당하는 Select 값에는 변화가 없습니다.

바인딩된 속성의 변화를 확인하려면 다음과 같은 코드를 사용하면 됩니다.
dstData.getSelect(dstData.rowposition)


멀티로 선택하는 경우에는 엑셀과 마찬가지로 Ctrl 키나 Shift 키를 사용할 수 있습니다.

컴포넌트 표현
- 그리드 셀 안에 다양한 컴포넌트를 삽입하는 겁니다.
앞에서 설명한 것처럼 displaytype과 edittype을 활용할 수 있습니다.
combo로 설정한 경우에는 combodataset을 설정해주어야 할 것이고 그 외 컴포넌트들도 특성에 맞게
속성을 제공해주어야 합니다.

입력값 제한
- 데이터셋에서 cancolumnchange 이벤트에서 처리할 수 있습니다.
이벤트에서 던져주는 DSColChangeEventInfo 에서 새로 입력한 값 (newvalue)과 기존 값(oldvalue)을 같이 제공해줍니다.
새로 입력한 값을 비교해서 더 큰 경우에는 false 를 반환해주고 새로운 값이 적용되지 않게 합니다.