[ Nexacro.Grid -  all Checked 처리 ]

 

 

                  [  ◎ Grid에서 전체 CheckBox클릭 시 모두 Check처리 ]     


/******************************************************************************************
 * 기능 : 그리드 헤드 클릭시 전체체크
 *        전체ROW 체크시 해당ROW의 특정컬럼이 값이 특정값일 경우만 체크처리도 됨
 * 인자 : obj     : Grid Object
 *        e       : GridClickEventInfo
 *        asColId : 찾을 컬럼명
 *        psExpr  : 전체 체크시 제외되어야할 함수명 또는 표현식
 *        paColId : 컬럼배열목록
 * 리턴 : none
 * 예문 : gfn_SetGridCheckAll(obj, e, "USE_CNT==0 && ST_CD=='KC'", ["USE_CNT","ST_CD"]);
 *         USE_CNT 컬럼 값이 0일 이면서(AND) ST_CD값이 ='KC' 인 경우만 체크 한다.
 *
- 그리드 헤드 예) <Cell displaytype="checkbox" edittype="checkbox" text="expr:0"/> 로 해야함.
 *****************************************************************************************/

function gfn_SetGridCheckAll(obj:Grid, e:GridClickEventInfo, psExpr, paColId)
{
    
if (obj.readonly == true) return;
    
var strType;
    
var vl_chk;
    
var strVal;
    
var strChkVal;
    
var objDS;
    
var nCell  = gfn_getHeadToBodyCell(obj,e.cell);
    
var nSubCnt = obj.getSubCellCount("head",nCell);

    objDS  = eval(obj.binddataset);
    strChkVal = gfn_BlankStr(obj.getCellProperty("
body", nCell, "text"));
    strChkVal = strChkVal.replace("bind:", "");
 
    
if (nSubCnt > 0) // Merge한 셀이 있는 경우
    {
        var nChkIdx = -1;
        for (var i = 0; i < nSubCnt; i++) {
            strType = obj.getSubCellProperty("
head",e.cell,i,"displaytype");
 
            if (strType == "checkbox") {
                nChkIdx =  i;
                
break;
            }
        }
        
if (nChkIdx == -1)
            
return;
 
        // Head셋팅
        strVal = obj.getSubCellProperty("
head", nCell, nChkIdx, "text");
        
if (gfn_IsNull(strVal)) strVal = "0";
 
        
if (strVal == "0") {
            obj.setSubCellProperty("
head",nCell,nChkIdx,"text", '1');
            vl_chk="1";
        } else {
            obj.setSubCellProperty("
head",nCell,nChkIdx,"text", '0');
            vl_chk="0";
        }
 
    }
    else // Merge한 셀이 없는 경우
    {
        strType = obj.getCellProperty("
head", e.cell, "displaytype");
 
        
if (strType != "checkbox") {
            
return;
        }
 
        // Head셋팅
        strVal = obj.getCellProperty("
head", nCell, "text");
        
if (gfn_IsNull(strVal)) strVal = "0";
        
        
if (strVal == "0") {
            obj.setCellProperty("
head", nCell, "text", '1');
            vl_chk="1";
        } else {
            obj.setCellProperty("
head", nCell, "text", '0');
            vl_chk="0";
        }
    }
    
    // Body셋팅
    
for (var i=0; i< objDS.rowcount; i++) {
        
if (gfn_ExistVal(psExpr)){
            var chkExpr = psExpr;
            for(var kk=0; kk<paColId.length; kk++){
                var sValue = gfn_BlankStr(objDS.getColumn(i, paColId[kk]));
                chkExpr = chkExpr.replace(paColId[kk], sValue);
            }
            
if (eval(chkExpr)){
                objDS.setColumn(i, strChkVal, vl_chk);
            }
        }
else{
            objDS.setColumn(i, strChkVal, vl_chk);
        }  
    }
}

 

☞  

 
 

 

--  아래는 위 function에서 필요한  공통함수들 임 --

 

/*++

프로그램 설명     : 클릭한 그리드 헤드에서 cell 정보를 가져온다.

@ Name            : cfn_getHeadToBodyCell

@ Parameter       : oGrid : Grid Object

@ Parameter       : e     : GridClickEventInfo

@ Return          : Cell Index

*/

function gfn_getHeadToBodyCell(oGrid:Grid,nCell)

{

    var sBand ="body";

    var nBodyCell  = oGrid.getCellProperty("head",nCell,"col");

    var nHeadRow   = oGrid.getCellProperty("head",nCell,"row");

    var nCellCount = oGrid.getCellCount(sBand);

    var nColCount  = oGrid.getFormatColCount();

    

    if (nHeadRow > 0 && nCellCount > nColCount) {

        return nCell;

    }

    

    for (var nCellIdx = 0; nCellIdx <nCellCount; nCellIdx++) {

        if (nBodyCell == oGrid.getCellProperty(sBand,nCellIdx,"col")) {

            nBodyCell = nCellIdx;

            break;

        }

    }

 

    return nBodyCell;

}

 

 

 

 

/////////////////////////////////////////////////////////////////

// method name  : cfn_BlankStr

// description  : 값이 존재하는지 여부 체크

// parameter    : oParam (object나 문자열)

// return       : undefined이면 ""(널 스트링)

// example      :

/////////////////////////////////////////////////////////////////

function cfn_BlankStr(oParam) {

 

    var strParam = new String(oParam);

    if(strParam.valueOf() == "undefined") {

        return "";

    }

 

    return oParam;

}

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

Nexacro.Grid - excel exort  (0) 2017.01.28
Nexacro.Grid - copy & paste  (0) 2017.01.28
Nexacro.Grid - grid Header Merge  (0) 2017.01.28
Nexacro.Grid - Conents Editor  (0) 2017.01.28
Nexacro.Grid - all Checked 처리  (0) 2017.01.28
Nexacro.Grid - grid header  (0) 2017.01.28
Posted by 농부지기