Ext GridPanel 조건에 따라 확인란 표시

2892 단어 ext확인란gridPanel
Ext GridPanel 구현 확인란 선택 상자:
 
var selectModel = new Ext.grid.CheckboxSelectionModel({
    singleSelect : false
});

 
그러나 이렇게 하면 모든 줄에 복선상자가 있다. 만약에 어떤 줄 데이터의 어떤 열이 어떤 조건을 충족시켜야 복선상자 옵션이 있으면 실현하기 어렵다.
이렇게 하면 Ext.grid를 다시 써야 한다.CheckboxSelectionModel의 렌더링은 행 클릭 함수로 이루어집니다.
 
var selectModel = new Ext.grid.CheckboxSelectionModel({
      singleSelect : false,
      renderer : function(v, p, record){
          if (record.data[' '] == '0'){
               return '';
          }
          return '<div class="x-grid3-row-checker">&#160;</div>';
      },
      onHdMouseDown : function(e, t) {
          if (t.className == 'x-grid3-hd-checker') {
               e.stopEvent();
               var hd = Ext.fly(t.parentNode);
               var isChecked = hd.hasClass('x-grid3-hd-checker-on');
               if (isChecked){
                  hd.removeClass('x-grid3-hd-checker-on');
                  this.clearSelections();
              }else {
                  hd.addClass('x-grid3-hd-checker-on');
                  if (this.locked){
                      return;
                  }
                  this.selections.clear();
                  for (var i = 0, len = this.grid.store.getCount(); i < len; i++ ){
                      if (this.grid.store.getAt(i).data[" "] != '0'){
                           this.selectRow(i, true);
                      }
                 }
              }
         }
      },
      handleMouseDown : function(g, rowIndex, e){
            if (e.button !== 0 || this.isLocked()) {
                   return;
            }
            var view = this.grid.getView();
            if (e.shiftKey && !this.singleSelect && this.last != false ) {
                 var last = this.last;
                 this.selectRange(last, rowIndex, e.ctrlKey);
                 this.last = last;
                 view.focusRow(rowIndex);
            }else{
                 var isSelected = this.isSelected(rowIndex);
                 if (e.ctrlKey && isSelected) {
                      this.deselectRow(rowIndex);
                 }else if(!isSelected || this.getCount() > 1){
                      if(this.grid.store.getAt(rowIndex).data[" "] != '0'){
                          this.selectRow(rowIndex, e.ctrlKey || e.shiftKey);
                      }
                      view.focusRow(rowIndex);
                 }
            }
      }
});

좋은 웹페이지 즐겨찾기