2010-12-11 38 views
5

Tôi đã tạo thành công một điều khiển người dùng để hiển thị thông báo lỗi. bây giờ mọi thứ hoạt động tốt nhưng khi thông báo được hiển thị các điều khiển nền có thể được truy cập. làm thế nào để vô hiệu hóa các điều khiển trang hoặc trang từ cách nhấp hoặc chọn bất kỳ điều khiển nào. và khi bảng điều khiển được đóng, nó sẽ cho phép các điều khiển trang.Làm thế nào để vô hiệu hóa các điều khiển trong một trang ASP.NET khi usercontrol được chọn?

tôi tìm thấy bạn bè trả lời.

void DisableControls(Control parent, bool status) 
    { 
    foreach (Control c in parent.Controls) 
      { 
       if (c is DropDownList) 
       { 
        ((DropDownList)(c)).Enabled = status; 
       } 
       if (c is Button) 
       { 
        ((Button)(c)).Enabled = status; 
       } 
       if (c is TextBox) 
       { 
        ((TextBox)c).Enabled = status; 
       } 

       if (c is RadioButton) 
       { 
        ((RadioButton)c).Enabled = status; 
       } 
       if (c is ImageButton) 
       { 
        ((ImageButton)c).Enabled = status; 
       } 
       if (c is CheckBox) 
       { 
        ((CheckBox)c).Enabled = status; 
       } 
       if (c is DropDownList) 
       { 
        ((DropDownList)c).Enabled = status; 
       } 
       if (c is HyperLink) 
       { 
        ((HyperLink)c).Enabled = status; 
       } 
       if (c is GridView) 
       { 
        ((GridView)c).Enabled = status; 
       } 
       if (c is Table) 
       { 
        ((Table)c).Enabled = status; 
       } 
       if (c is Menu) 
       { 
        ((Menu)c).Enabled = status; 
       } 
       if (c is TreeView) 
       { 
         ((TreeView)c).Enabled = status; 
        } 
} 
     } 
+0

khi điều khiển người dùng được kích hoạt, tôi nhận được div trong đó tôi đã thêm các điều khiển. Nhưng các điều khiển trong trang từ nơi tôi gọi cũng hoạt động. tôi muốn vô hiệu hóa các điều khiển trong trang đó. –

+0

Tôi nghĩ rằng bạn sẽ thấy rằng bạn có thể đơn giản hóa mã của bạn * rất nhiều * bằng cách sử dụng như sau: 'foreach (Kiểm soát c trong parent.Controls) {c.Enabled = false; } 'bởi vì Enabled là thuộc tính của' Control'. – Crisfole

+0

cảm ơn bạn đã trả lời. tôi đã cố gắng nhưng đã không thể làm điều đó thành công. nó ném một lỗi. –

Trả lời

2

Tôi hiểu rồi, bạn muốn nó hoạt động giống như một hộp thoại modal. Nó có thể được thực hiện thông qua html + javascript đơn giản. Bạn phải tạo một lớp phủ div trong suốt đi qua toàn bộ trang, do đó, người dùng thay vì nhấp vào các điều khiển mà nó sẽ nhấp vào div. Z-index cho biết vị trí trên phần còn lại của các điều khiển.

<!-- Div Overlay --> 
<div id="div-overlay" style="position: absolute; height: 100%; width: 100%; z-index: 200; display: none; opacity: 0.0"></div> 

<!-- Scripts to show/hide overlay --> 
<script type="text/javascript"> 
function showOverlay() { 
    var e = document.getElementById('div-overlay'); 
    e.style.display = 'block'; 
} 

function hideOverlay() { 
    var e = document.getElementById('div-overlay'); 
    e.style.display = 'none'; 
} 
</script> 

Hy vọng điều đó sẽ hữu ích.

1

Bạn có thể sử dụng đơn giản là một div và với sự giúp đỡ của CSS, bạn có thể có khả năng hiển thị div mà như một popup modal hoặc đơn giản là sử dụng jquery modal bật lên http://jqueryui.com/demos/dialog/ hoặc asp.net ajaxcontrol toolkit http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx

+0

không, tôi không muốn sử dụng ajax trong này vì tôi có một số vấn đề như nhấp nháy trang và v.v. –

+0

Sử dụng JQuery nếu bạn có thể hoặc chỉ cần sử dụng CSS để hiển thị như một cửa sổ bật lên phương thức và sau đó tất cả các điều khiển khác sẽ không thể truy cập được –

+0

bạn có thể cho tôi ví dụ –

0

Are bạn đang cố gắng tạo một hộp thoại phương thức? Nếu có, bạn có thể sử dụng ModalPopupExtender Control từ asp.net ajax. kiểm tra liên kết này:

http://msdn.microsoft.com/en-us/magazine/cc164247.aspx

+0

không sử dụng ajax trong đó –

+0

Bạn đã thử sử dụng điều khiển này chưa? Tôi không nghĩ rằng bạn sẽ nhận được bất kỳ vấn đề như trang nhấp nháy. – sid

+0

Khi trang tải lại hoặc làm mới cửa sổ bật lên mô hình chỉ xuất hiện và sẽ mất vài giây –

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