zoukankan      html  css  js  c++  java
  • 转:Ext GridPanel根据条件显示复选框

    Ext GridPanel实现复选框选择框:

    var selectModel = new Ext.grid.CheckboxSelectionModel({
         singleSelect : false
    });

    但是这样每一行都会有复选框,如果需求为:某行数据的某个列满足什么条件我才有复选框选项就不太好实现了,

    这样就需要重写Ext.grid.CheckboxSelectionModel的渲染,行点击涵数来实现.

    1 var selectModel = new Ext.grid.CheckboxSelectionModel({
     2       singleSelect : false,
     3       renderer : function(v, p, record){
     4           if (record.data['结果状态'] == '0'){
     5                return '';
     6           }
     7           return '<div class="x-grid3-row-checker">&#160;</div>';
     8       },
     9       onHdMouseDown : function(e, t) {
    10           if (t.className == 'x-grid3-hd-checker') {
    11                e.stopEvent();
    12                var hd = Ext.fly(t.parentNode);
    13                var isChecked = hd.hasClass('x-grid3-hd-checker-on');
    14                if (isChecked){
    15                   hd.removeClass('x-grid3-hd-checker-on');
    16                   this.clearSelections();
    17               }else {
    18                   hd.addClass('x-grid3-hd-checker-on');
    19                   if (this.locked){
    20                       return;
    21                   }
    22                   this.selections.clear();
    23                   for (var i = 0, len = this.grid.store.getCount(); i < len; i++ ){
    24                       if (this.grid.store.getAt(i).data["结果状态"] != '0'){
    25                            this.selectRow(i, true);
    26                       }
    27                  }
    28               }
    29          }
    30       },
    31       handleMouseDown : function(g, rowIndex, e){
    32             if (e.button !== 0 || this.isLocked()) {
    33                    return;
    34             }
    35             var view = this.grid.getView();
    36             if (e.shiftKey && !this.singleSelect && this.last != false ) {
    37                  var last = this.last;
    38                  this.selectRange(last, rowIndex, e.ctrlKey);
    39                  this.last = last;
    40                  view.focusRow(rowIndex);
    41             }else{
    42                  var isSelected = this.isSelected(rowIndex);
    43                  if (e.ctrlKey && isSelected) {
    44                       this.deselectRow(rowIndex);
    45                  }else if(!isSelected || this.getCount() > 1){
    46                       if(this.grid.store.getAt(rowIndex).data["结果状态"] != '0'){
    47                           this.selectRow(rowIndex, e.ctrlKey || e.shiftKey);
    48                       }
    49                       view.focusRow(rowIndex);
    50                  }
    51             }
    52       }
    53 });

    原文:

    http://fordream.iteye.com/blog/1179252
  • 相关阅读:
    自定义组件要加@click方法
    绑定样式
    647. Palindromic Substrings
    215. Kth Largest Element in an Array
    448. Find All Numbers Disappeared in an Array
    287. Find the Duplicate Number
    283. Move Zeroes
    234. Palindrome Linked List
    202. Happy Number
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/glsqh/p/6185801.html
Copyright © 2011-2022 走看看