[ Nexacro.Grid -  treeView ]

 

 


/*********************************************************************************************
 ★ 설명
     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;

}

/******************************************************************************
  * Function명 : gf_getTreeChildCountAll
  * 설명       : Tree의 특정 Node의 모든 Child Node 갯수를 가져온다.
  * Params     : gridObj      - Grid
  *              dsRow        - Dataset row index
  * Return     : integer
  ******************************************************************************/

 function gf_getTreeChildCountAll(gridObj:Grid, dsRow)

 {

         var dsObj = eval(gridObj.binddataset);

         var childCount = gridObj.getTreeChildCount(dsRow);

         

        if(childCount > 0)

         {

                 var startIdx = gridObj.getTreeChildRow(dsRow, 0);

                 var endIdx = gridObj.getTreeChildRow(dsRow, -1);

                 

                childCount = endIdx - startIdx + 1;

         }

         

        return childCount;

 }

 

/******************************************************************************
  * Function명 : gf_getTreeChildRowAll
  * 설명       : Tree의 특정 Node의 Child Node 의 row index를 배열에 담아 반환한다.
  * Params     : gridObj      - Grid
  *              dsRow        - Dataset row index
  *              childRows    - Array
  * Return     : Array(Child Node 의 Dataset row index를 담고 있는 배열)
  ******************************************************************************/

 function gf_getTreeChildRowAll(gridObj:Grid, dsRow, childRows)

 {

         var dsObj = eval(gridObj.binddataset);

         var childCount = gridObj.getTreeChildCount(dsRow);

         

        if(childCount > 0)

         {

                 var startIdx = gridObj.getTreeChildRow(dsRow, 0);

                 var endIdx = gridObj.getTreeChildRow(dsRow, -1);

                 

                for(var idx = startIdx; idx <= endIdx ; idx++)

                 {

                         childRows[childRows.length] = idx;

                 }

         }

         

        return childRows;

 }

 

/******************************************************************************
  * Function명 : gf_getTreeChildCheckAll
  * 설명       : Tree의 특정 Node의 모든 Child Node를 Parent Node 체크 상태에 따라 check/uncheck 수행
  * Params     : gridObj       - Grid
  *              dsRow         - Dataset row index
  *              checkColumnNm - Tree Column속성중 treecheck에 bind된 column 명
  * Return     : Array
  ******************************************************************************/

 function gf_getTreeChildCheckAll(gridObj:Grid, dsRow, checkColumnNm)

 {

         var dsObj = eval(gridObj.binddataset);

         var checkYn = dsObj.getColumn(dsRow, checkColumnNm);

         var childRows = gf_getTreeChildRowAll(gridObj, dsRow, new Array());

         

        for (var idx=0; idx < childRows.length; idx++)

         {

                 dsObj.setColumn(childRows[idx], checkColumnNm, checkYn);

         }

         

        return childRows;

 }

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > Grid' 카테고리의 다른 글

Nexacro.Grid - cell을 area로 선택 시 cell의 sum,avg구하기  (0) 2018.01.04
Nexacro.Grid - treeView2  (0) 2017.01.28
Nexacro.Grid - excel exort  (0) 2017.01.28
Nexacro.Grid - copy & paste  (0) 2017.01.28
Nexacro.Grid - Conents Editor  (0) 2017.01.28
Posted by 농부지기
,