language/jquery

jqgrid / 컬럼 show / hide / checked box / 컬럼 표시, 숨기기

CofS 2016. 1. 5. 14:23

jqgrid 컬럼을 show hide (보여주거나 숨기는)기능을 구현한 예제입니다.

 

 

 


jqgrid 사용 필수입니다.

 

 

 

 


우측 상단의 checked box로 컬럼들의 show hide를 결정한다.


모든 컬럼을 대상으로 할수도 있고

직접 입력한 컬럼을 대상으로 할 수 있다.


 

실행 방법 및 설명은 소스와 주석을 참고하면 쉽게 따라할 수 있을거라 생각한다.

 





jsp 파일

jqgrid loadComplete 함수

loadComplete : function(data){  
    // 컬럼 속성
    // var colModel = $("#jqGrid").jqGrid("getGridParam", "colModel");
    // 컬럼명
    // var colNames = $("#jqGrid").jqGrid("getGridParam", "colNames");
    
    // 컬럼 속성
    var colModel = "";
    // 컬럼명 name = 한글명 또는 컬럼명, index = colModel에 선언되어있는 index
          var colNames = [{name:"PROCESS_ID_컬럼",
              index:"PROCESS_ID"},
              {name:"ID_컬럼",
              index:"ID"},
              {name:"IDXNO_컬럼",
               index:"IDXNO"}];
          // 숨길 컬럼명
          var hideColNames = ["ID_컬럼","IDXNO_컬럼"];
          
       // 최초 컬럼명 check box list 생성
          addColCheckboxList("jqGrid","gridColChkckboxList", colNames, hideColNames, colModel);
}
cs

 

js 파일

////////////////////////////////////////////////////////////////////////////////////////////////////
// grid 컬럼 show hide 기능 시작
////////////////////////////////////////////////////////////////////////////////////////////////////
//addColCheckboxList 함수 실행 여부
var addColCheckboxListFlag = false;
 // 최초 그리드 사이즈
var colShowHideDefaultGridWidth = 0;
 
//최초 컬럼명 check box list 생성
/**
 * grid show hide 체크박스 생성
 * 
 * 
 * @param gridId - gridId (text)
 * @param ctrlBoxId - 컨트롤 박스 아이디 (text)
 * @param colNames - show hide 사용할 컬럼명 (JSON 배열)
 * @param gridWidth - grid의 초기 width값, 컬럼의 show hide시 그리드 전체 크기는 변동없게 하기 위한 용도
 * @param colModel - 전체 그리드 컬럼 모델, 컬럼 속성 중 hidden 의 값을 판단하는 용도로 필요 (배열)<br/>
 *       해당 컬럼이 null 또는 '' 일 경우 colNames를 기준으로 생성<br/><br/>
 *
 *ex) <br/>
 *  loadComplete 에서 실행 <br/>
 *<br/>
 *  var gridId =  "jqGrid";<br/>
 *  var colModel = $("#"+gridId).jqGrid("getGridParam", "colModel");<br/>
 *  var colNames = $("#"+gridId).jqGrid("getGridParam", "colNames");<br/>
 *  var hideColNames = ["ID","IDXNO"];<br/>
 *  addColCheckboxList(gridId,"gridColChkckboxList", colNames, hideColNames, colModel);<br/>
 *<br/>
 *  또는<br/>
 *<br/>
 *  var gridId =  "jqGrid";<br/>
 *  var colNames = ["PROCESS_ID","ID","IDXNO"];<br/>
 *  var hideColNames = ["ID","IDXNO"];<br/>
 *  addColCheckboxList(gridId,"gridColChkckboxList", colNames, hideColNames, '');<br/>
 */
function addColCheckboxList(gridId, ctrlBoxId, colNames, hideColNames, colModel){
 if(!addColCheckboxListFlag){
  var self = $("#"+gridId);
     var htmls = "";
     colShowHideDefaultGridWidth = $('#gbox_'+gridId).width(); // 최초 gire width 셋팅
    
     if(colModel == '' || colModel == null){ // colMedel이 없으면 입력한 colNames로만 목록을 생성
      $.each(colNames, function(i) {
    var colNm = this.name;
       var thisColNm = this.index;
       var hideFlag = false;
       for(var j=0; j<hideColNames.length; j++){
        if(hideColNames[j] == colNm){
         hideFlag = true;
         break;
        }
       }
       
       if(hideFlag){ // 기본값 : col hide
        htmls += '<input type="checkbox" id="col_showhide_'+thisColNm+'" value="'+thisColNm+'" onclick="gridColShowHide(\''+ gridId +'\',this);" ><label for="col_showhide_'+thisColNm+'">'+colNm+'</label>  ';
        self.hideCol(thisColNm);
       }else{
        htmls += '<input type="checkbox" id="col_showhide_'+thisColNm+'" value="'+thisColNm+'" onclick="gridColShowHide(\''+ gridId +'\',this);" checked="checked"><label for="col_showhide_'+thisColNm+'">'+colNm+'</label>  ';
        self.showCol(thisColNm);
       }
       
      });
     }else// 전체 컬럼 중 hidden이 true가 아닌 모든 컬럼으로 생성
      $.each(colModel, function(i) {
       if (!this.hidden) { // 컬럼 속성중 hidden이 false 인 것만 해당
        var colNm = colNames[i];
        var thisColNm = this.name;
           var hideFlag = false;
           for(var j=0; j<hideColNames.length; j++){
            if(hideColNames[j] == colNm){
             hideFlag = true;
             break;
            }
           }
           
           if(hideFlag){ // 기본값 : col hide
            htmls += '<input type="checkbox" id="col_showhide_'+thisColNm+'" value="'+thisColNm+'" onclick="gridColShowHide(\''+ gridId +'\',this);" ><label for="col_showhide_'+thisColNm+'">'+colNm+'</label>  ';
            self.hideCol(thisColNm);
           }else{
            htmls += '<input type="checkbox" id="col_showhide_'+thisColNm+'" value="'+thisColNm+'" onclick="gridColShowHide(\''+ gridId +'\',this);" checked="checked"><label for="col_showhide_'+thisColNm+'">'+colNm+'</label>  ';
            self.showCol(thisColNm);
           }
       }
       
      });
     }
  
  $("#"+ctrlBoxId).html(htmls);
  
  // 그리드 사이즈 고정
    self.setGridWidth(colShowHideDefaultGridWidth);
  
    // addColCheckboxList 함수 실행 여부
  addColCheckboxListFlag = true;
 }
}
 
 
// 컬럼 show hide
function gridColShowHide(gridId, el){
 var thisEl = $(el);
 var self = $("#"+gridId);
 var thisColName = thisEl.val();
 
 if(thisEl.is(":checked"== true) {
  self.showCol(thisColName);
 }else{
  self.hideCol(thisColName);
 }
 
 // 그리드 사이즈 고정
 self.setGridWidth(colShowHideDefaultGridWidth);
}
 
cs

 

 

 

도움이 되셨다면 공감을 부탁드립니다. ^^