[ 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;
}