2012-11-15 41 views
5

Vui lòng trợ giúp! Tôi đang sử dụng bảng điều khiển ExtJs 4.1.Bảng điều khiển lưới Extjs - Thay đổi thuộc tính enableColumnHide sau khi hiển thị

Tôi đang tìm cách thay đổi thuộc tính enableColumnHide của lưới sau khi hiển thị. Tôi tái sử dụng cùng một lưới trong một vài màn hình với những thay đổi nhỏ, chủ yếu là ẩn một số cột.

Trong một trong các màn hình này, tôi chỉ còn lại các cột không bị ẩn nên tôi muốn xóa hoàn toàn tùy chọn từ menu tiêu đề cột, nhưng khôi phục lại khi tôi đến một trong các màn hình khác.

Bất kỳ ý tưởng nào?

Trả lời

1

Có vẻ như không có cách rõ ràng để thực hiện, nhưng tôi đã tìm thấy một hack - thay đổi enableColumnHide trên headerCt và tiêu diệt menu tiêu đề mỗi khi bạn thay đổi giá trị đó. mã ví dụ:

var checkbox = new Ext.form.field.Checkbox({ 
    renderTo: 'checkbox', 
    boxLabel: 'enableColumnHide', 
    checked: true, 
    handler: function(sender, checked) { 
     var h = grid.headerCt; 
     h.enableColumnHide = checked; 
     if (h.menu) { 
      h.menu.destroy(); 
      h.menu = null; 
     } 
    } 
}); 

Nó cũng posiible bằng cách sử dụng hideable trên các cột:

var checkbox = new Ext.form.field.Checkbox({ 
    renderTo: 'checkbox', 
    boxLabel: 'enableColumnHide', 
    checked: true, 
    handler: function(sender, checked) { 
     Ext.each(grid.columns, function(c){ 
      c.hideable = checked; 
     }); 
    } 
}); 

mẫu Làm việc với enableColumnHide: http://jsfiddle.net/M3Aqq/5/

mẫu Làm việc với hideable: http://jsfiddle.net/M3Aqq/9/

+0

thú vị ... Sẽ làm việc này còn cho tài sản Hideable trên các cột? – danfromisrael

+0

Với hideable không cần phải hủy menu. Tôi đã cập nhật câu trả lời của mình. – Krzysztof

+0

Đó là awesomem, 10x Lolo! có cách nào để điều này để các cột không bị ẩn không xuất hiện trên danh sách hộp kiểm "Cột" không? Tôi muốn người dùng chỉ xem các cột mà cô ấy thực sự có thể ẩn trong danh sách đó –

2

tôi cũng đã có một vấn đề tương tự trước đây. bạn có thể kiểm tra ở đây cho workaround của tôi:

Extjs Grid panel - Hide a column with hideable=false

về cơ bản tôi đã đăng ký với "beforeshow" sự kiện của menu tiêu đề lưới và ẩn từng hạng mục checkbox cột hideable trên menu theo "hideable" thích hợp trên mỗi cột.

bạn có thể làm tương tự với "enableColumnHide" (chỉ cần giấu "Cột" menu con mà chỉ là một mục trình đơn chính nó)

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