2012-10-09 44 views
7

Tôi cần xóa một điều khiển (hộp văn bản) khỏi trang của tôi khi một điều kiện nhất định được xác minh. Có thể thực hiện từ mã sau hoặc tôi cần sử dụng JavaScript hay không.Xóa điều khiển asp.net khỏi mã sau

LƯU Ý tôi cần phải loại bỏ sự kiểm soát, không để ẩn ...

+1

Chỉ cần xóa nó bằng ID từ bộ sưu tập điều khiển trang. – IrishChieftain

+0

Khi nào tình trạng của bạn được xác minh? Có phải trước/trong khi hiển thị trang không? Nếu không, bạn thực sự cần javascript/DOM để đi kèm mà không cần tải lại trang. –

+0

@ J.Hudler điều kiện được đánh giá trong page_load – davioooh

Trả lời

10

Sử dụng Controls.Remove hoặc Controls.RemoveAt trên phụ huynh ControlCollection.

Ví dụ, nếu bạn muốn loại bỏ tất cả các hộp thoại từ phía trên của trang:

var allTextBoxes = Page.Controls.OfType<TextBox>().ToList(); 
foreach(TextBox txt in allTextBoxes) 
    Page.Controls.Remove(txt); 

(lưu ý rằng bạn cần phải thêm using System.Linq cho Enumerable.OfType)

hoặc nếu bạn muốn xóa một Hộp văn bản có ID đã cho:

TextBox textBox1 = (TextBox)Page.FindControl("TextBox1"); // note that this doesn't work when you use MasterPages 
if(textBox1 != null) 
    Page.Controls.Remove(textBox1); 

Nếu bạn chỉ muốn ẩn nó (và xóa nó khỏi cl ientside hoàn toàn), bạn cũng có thể làm cho nó vô hình:

textBox1.Visible = false; 
0

Vâng, bạn chỉ có thể loại bỏ nó khỏi bộ sưu tập Controles of the page:

this.Controls.Remove(control); 
2

Trong khi bạn có thể loại bỏ từ bộ sưu tập điều khiển, tại sao không ẩn nó?

yourTextBox.Visible = false; 

Điều này sẽ ngăn không cho nó được đưa vào html được tạo được gửi tới trình duyệt.

1

Khi bạn đặt .Visible=false, nó sẽ không bao giờ được hiển thị trong trang. Nếu bạn xóa điều khiển khỏi bộ sưu tập Điều khiển, đừng làm điều đó trong các giai đoạn DataBind, Init, Load, PreRender hoặc Unload vì nó sẽ ném ngoại lệ.

Thêm hoặc xóa điều khiển tự động có thể gây ra sự cố.

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