2012-03-02 35 views
5

Tôi đã tạo ra một lưới với extjs 4. Lựa chọn.CheckboxModel được triển khai. Điều này có nghĩa là hàng được chọn/bỏ chọn bất cứ nơi nào bạn nhấp vào hàng cụ thể. Bây giờ tôi muốn vô hiệu hóa lựa chọn này trên cột cuối cùng vì nó chứa các nút tùy chỉnh. (Tôi không muốn chọn hàng nếu một nút được nhấp).ExtJS 4 - Grid - Vô hiệu hóa các lựa chọn hàng cho cột cụ thể

Bất kỳ ý tưởng nào về cách thực hiện việc này?

Rất cám ơn trước!

Trả lời

9

Đây thực sự là một vấn đề nhỏ khó khăn, nếu chỉ vì tài liệu của Sencha còn thiếu.

CheckboxModel thực sự có sự kiện beforeselect được kế thừa từ Ext.selection.RowModel. Tuy nhiên, không có cách nào dễ dàng để có được chỉ số cột bởi vì thẳng thắn, đó là quan điểm của RowModel.

Tuy nhiên, có sự kiện không có giấy tờ trong số Ext.view.Table (mạng lưới của bạn sẽ kế thừa) được gọi là beforecellmousedown. Dưới đây là các thông số sự kiện:

  1. xem: Quan điểm của lưới bạn
  2. tế bào: Tế bào mà được nhấp
  3. cellIndex: Index của tế bào
  4. kỷ lục: Kỷ lục cửa hàng kết hợp với các tế bào
  5. hàng: hàng của tế bào
  6. rowIndex: Index của hàng
  7. eOpts: sự kiện Tiêu chuẩn lựa chọn sự kiện

Vì vậy, bạn có lẽ sẽ thử một cái gì đó như thế này:

viewConfig: { 
    listeners: { 
     beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts){ 
      if(cellIdx === indexOfLastColumnInGrid){ 
       return false; 
      } 
     } 
    } 
} 

Cả tế bào và hàng chỉ là zero-based.

+0

Cảm ơn Eric! Tôi sẽ thử! – user1245146

1
listeners: { 
    beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts) { 
     if (String(eOpts.getTarget()) == '[object HTMLButtonElement]') { 
      return false; 
     } 
    } 
} 

Thanx Eric. Đây là giải pháp cuối cùng!

Các vấn đề liên quan