/********************************************************************************************* ★ 설명 Grid로 Treeview처리 시 nCurRow의 sLevelCol에 해당하는 현재 Level보다 0 ~ (nCurRow-1) Record중 더 상위의 Level(bFlag에 따라)에 해당하는 Record를 모두 구해 Array로 Return한다. ★ parameter 1. obj:Dataset : Dataset Object ( 예 : Dataset00 ) 2. sLevelCol : Level값이 들어있는 Column명 ( 예 : "level" ) 3. nCurrow : 현재 Record ( 예 : 10 ) 4. bInclude : 현재 level을 포함할 지 여부 ( 예 : true ) ( Default = true ) - true = 상위의 Level을 찾을 때 nCurRow Level과 동일한 Level도 포함 - false = 상위의 Level을 찾을 때 nCurRow Level과 동일한 Level은 포함 안함 ★ return - 성공 = Array ( record번호만 들어있음 ) - 실패 = 빈 Array *********************************************************************************************/
function TreeGetParentList(obj:Dataset, sLevelCol, nCurRow, bInclude)
{
var i, nLevel, nChkLevel;
var aRet = new Array(), aNo=0;
var bFlag;
if( fn_IsNull(obj) || fn_IsNull(sLevelCol) || fn_IsNull(nCurRow) )
return aRet;
if( fn_IsNull(bInclude) == true ) bInclude = true;
if( bInclude == true )
nChkLevel = parseInt(obj.getColumn(nCurRow, sLevelCol));
else
nChkLevel = parseInt(obj.getColumn(nCurRow, sLevelCol))-1;
for( i = (nCurRow-1) ; i >= 0 ; i-- )
{
nLevel = parseInt(obj.getColumn(i, sLevelCol));
if( nLevel <= nChkLevel )
{
aRet[aNo] = i;
aNo++;
nChkLevel = nLevel;
}
}
return aRet.sort();
}
/********************************************************************************************* ★ 설명 Grid로 Treeview처리 시 0 ~ (nCurRow-1)의 Record중 nOffsetLevel에 해당하는 시작 부모 Record를 찾는다. ★ parameter 1. obj:Dataset : Dataset Object ( 예 : Dataset00 ) 2. sLevelCol : Level값이 들어있는 Column명 ( 예 : "level" ) 3. nCurrow : 현재 Record ( 예 : 10 ) 4. nOffsetLevel : 양수(0, 음수는 안됨)에 해당하는 검색할 Offset Level ( 옵션 : Default = 1 ) ( 예 : 1 = 나보다 1 Level 위의 Parent의 시작 Record를 찾으라는 뜻 ) ★ return - 성공 = Start Record - 실패 = -1 ★ 주의사항 nOffsetLevel은 0 또는 음수를 주면 안된다. *********************************************************************************************/
function TreeGetParentStart(obj:Dataset, sLevelCol, nCurRow, nOffsetLevel)
{
var i, nLevel, nChkLevel, nStartRow = -1;
if( fn_IsNull(obj) || fn_IsNull(sLevelCol) || fn_IsNull(nCurRow) )
return -1;
if( fn_IsNull(nOffsetLevel) == true ) nOffsetLevel = 1;
if( nOffsetLevel <= 0 )
return -1;
nChkLevel = parseInt(obj.getColumn(nCurRow, sLevelCol)) - nOffsetLevel;
for( i = (nCurRow-1) ; i >= 0 ; i-- )
{
nLevel = parseInt(obj.getColumn(i, sLevelCol));
if( nLevel == nChkLevel )
{
nStartRow = i;
break;
}
if( nLevel < nChkLevel )
nChkLevel = nLevel;
}
return nStartRow;
}
******************************************************************************************** ★ 설명 Grid로 Treeview처리 시 nCurRow+1 ~ 끝 Record중 nCurRow의 Level이하의 Child Level이 끝나는 Record를 찾는다. 즉, 자식이 끝나는 Record를 찾는다. ★ parameter 1. obj:Dataset : Dataset Object ( 예 : Dataset00 ) 2. sLevelCol : Level값이 들어있는 Column명 ( 예 : "level" ) 3. nCurrow : 현재 Record ( 예 : 10 ) ★ return - 성공 = End Record - 실패 = -1 *********************************************************************************************/
function TreeGetChildEnd(obj:Dataset, sLevelCol, nCurRow)
{
var i, nLevel, nChkLevel, nEndRow = (obj.rowcount - 1);
if( fn_IsNull(obj) || fn_IsNull(sLevelCol) || fn_IsNull(nCurRow) )
return -1;
nChkLevel = parseInt(obj.getColumn(nCurRow, sLevelCol));
for( i = (nCurRow+1) ; i < obj.rowcount ; i++ )
{
nLevel = parseInt(obj.getColumn(i, sLevelCol));
if( nLevel <= nChkLevel )
{
nEndRow = i-1;
break;
}
}
return nEndRow;
} |