2012-10-09 3 views
7

특정 조건이 확인되면 내 페이지에서 컨트롤 (텍스트 상자)을 제거해야합니다. 코드 숨김을 사용하거나 JavaScript를 사용해야합니다. 당신은 제거 할 수 있지만코드 숨김에서 asp.net 컨트롤 제거

this.Controls.Remove(control); 
+1

페이지 컨트롤 컬렉션에서 ID로 제거하면됩니다. – IrishChieftain

+0

귀하의 상태는 언제 확인됩니까? 페이지 렌더링 전/도중입니까? 그렇지 않다면 실제로 페이지를 다시로드하지 않고 javascript/DOM이 필요합니다. –

+0

@ J.Hudler page_load 동안 조건이 평가됩니다. – davioooh

답변

10

사용 Controls.Remove 또는 Controls.RemoveAt을 부모 ControlCollection에. 예를 들어

, 당신은 페이지의 상단에서 모든 텍스트 상자를 제거하려면 :

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

당신이를 제거하려면

또는 (당신이 Enumerable.OfType에 대한 using System.Linq를 추가 할 필요가 있습니다) 주어진 ID를 가진 TextBox :

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

그냥 숨기고 싶다면 (cl ientside 완전히), 보이지 않게 할 수도 있습니다.

textBox1.Visible = false; 
0

예, 당신은 페이지의 조작기 모음에서 제거 할 수 있습니다 그것은 컨트롤 컬렉션에서 왜 대신 그것을 숨기지 않을까요?

yourTextBox.Visible = false; 

이렇게하면 생성 된 HTML이 브라우저로 전송되지 않습니다.

2

:

참고 내가 숨길 수 없습니다, 컨트롤을 제거해야 ...

1

.Visible=false으로 설정하면 페이지에 렌더링되지 않습니다. 컨트롤 컬렉션에서 컨트롤을 제거하는 경우 예외가 발생하기 때문에 DataBind, Init, Load, PreRender 또는단계 동안 변경하지 마십시오.

컨트롤을 동적으로 추가하거나 제거하면 문제가 발생할 수 있습니다.

관련 문제