/******************************************************************************* ★ 설명 Grid Sorting하는 함수(Header Sorting여부 표시 포함) ★ parameter 1. obj:Grid : Grid Object ( 예 : Grid00 ) 2. e:GridClickEventInfo : Click Event Object ( Grid Onclick Envent의 Argument e ) 3. ASC_MARK : Ascending Mark (옵션 : Default = "▼")( 예 : "▼" ) 4. DESC_MARK : Descending Mark (옵션 : Default = "▲")( 예 : "▲" ) 5. sSortMark : Sorting 강제 지정 (옵션 : Default = "" ==> 상태에 따라 알아서 함) (예 : ASC_MARK 또는 DESC_MARK 지정 ) ★ return - 성공 = true - 실패 = false ******************************************************************************/
function GridSort(obj:Grid, e:GridClickEventInfo, ASC_MARK, DESC_MARK, sSortMark)
{
if( fn_IsNull(obj) || fn_IsNull(e) ) return false;
// 컬럼의 정렬방식을 'head'의 text에 "↑,↓"여부로 판단.
// 이미지로 대체 가능.
var bindDs = eval(obj.binddataset);
var i, cell_cnt;
if (bindDs.rowcount == 0) return false;
if( fn_IsNull(ASC_MARK) ) ASC_MARK = "▼";
if( fn_IsNull(DESC_MARK) ) DESC_MARK = "▲";
cell_cnt = obj.getCellCount("head");
var BodyColId = (obj.getCellProperty("body", e.col,"text")).toString().split(":"); // e.col : 바인드된 컬럼.
for( i = 0 ; i < cell_cnt ; i++ )
{
if(obj.getCellText(-1, i)=="undefined")
continue;
var strHeadText = obj.getCellText(-1, i);
if(i==e.cell)
{
if(strHeadText.substr(strHeadText.length-1) == ASC_MARK)
{
if( fn_IsNull(sSortMark) || sSortMark == DESC_MARK )
{
obj.setCellProperty( "head", i, "text", strHeadText.substr(0, strHeadText.length - 1)+DESC_MARK);
bindDs.keystring = "S:-"+BodyColId[1];
}
}
else if (strHeadText.substr(strHeadText.length-1) == DESC_MARK)
{
if( fn_IsNull(sSortMark) || sSortMark == ASC_MARK )
{
obj.setCellProperty( "head", i, "text", strHeadText.substr(0, strHeadText.length - 1)+ASC_MARK);
bindDs.keystring = "S:+"+BodyColId[1];
}
}
else
{
var def_mark;
if( fn_IsNull(sSortMark) ) def_mark = ASC_MARK;
else def_mark = sSortMark;
obj.setCellProperty( "head", i, "text", strHeadText+def_mark);
if( def_mark == ASC_MARK )
bindDs.keystring = "S:+"+BodyColId[1];
else
bindDs.keystring = "S:-"+BodyColId[1];
}
}
else // 정렬표시 삭제
{
if (strHeadText.substr(strHeadText.length-1) == ASC_MARK || strHeadText.substr(strHeadText.length-1) == DESC_MARK)
{
obj.setCellProperty( "head", i, "text", strHeadText.substr(0, strHeadText.length - 1));
}
}
}
return true;
} |