2011-10-14 4 views
2

을 사용하여 컨트롤 목록에서 각 컨트롤의 ID를 가져옵니다. 컨트롤 (예 : 텍스트 상자)의 목록 또는 배열이 선언되어 코드 뒤에 추가되었습니다. .ASP.NET ASP.NET/C# 응용 프로그램에서 javascript

List<TextBox> LstOfBoxes = new List<TextBox>(); 

목록 (또는 배열)에있는 모든 컨트롤의 가시성을 변경하려면 자바 스크립트를 사용하고 싶습니다.

나는 내가 1 텍스트 상자의 가시성을 변경하려는 경우 내가 이것을 사용하는 것이 알고

document.getElementById("<%=TextBox1.ClientID %>").style.display = 'none'; 

하지만, 각 컨트롤의 ID를 얻을 변경하는 방법을 모든 목록 (또는 배열)을 통해 루프에 'none'으로 표시

고마워요.

답변

1

목록 자체는 페이지에 HTML 요소를 만들지 않습니다. 목록이 있고 그 뒤에있는 코드에서 해당 목록을 반복하여 페이지의 항목을 삭제하면 해당 텍스트 상자를 대상으로하는 명확한 방법이 없습니다.

List<TextBox> listOfTb = MethodToFillYourList(); 
var panel = new Panel { CssClass = "tbHolder" }; 
foreach (var textbox in listOfTb) 
{ 
    panel.Controls.Add(textbox); 
} 
YourControlToAddTextBoxesTo.Controls.Add(panel); 

이제 클라이언트 측에서 "tbHolder"DIV (Panel 컨트롤 = .NET에서 DIV 태그)를 치고 그 안에 각 텍스트 상자를 숨기 : 그래서 같은 용기를 포장 것입니다. 다음은 jQuery와 숨기기 루틴의 일반적인 JS 버전입니다.

// New JQuery hotness 
$(".tbHolder input[type=text]").hide(); 

// Old and Busted JS 
var tbs = document.getElementsByClassName("tbHolder").getElementsByTagName("input"); 
for (var i = 0; i < tbs.length; i++) { 
    tbs[i].style.display = 'none'; 
} 
0

div의 모든 리피터를 리피터에 저장하도록 요청했습니다. 부모와 자식 같은 jQuery 선택기를 사용할 때 도움이 될 것입니다. 내 영어로 죄송합니다. :)

1

document.getElementsByTagName() 또는 document.getElementsByClassName() 방법을 통해 구하십시오. 또 다른 방법은 모든 입력 텍스트 필드 (TextBox)를 <div>으로 바꾸고 스타일 속성을 <div>으로 설정하는 것입니다.

+0

안녕하세요, 답변 해 주셔서 감사합니다. 텍스트 상자는 디자인 페이지가 아닌 코드 뒤에 생성됩니다. getElementsByTagName()을 사용하여 가져 오는 방법을 알려주시겠습니까? 어떤 태그 이름을 사용합니까? 감사합니다. – Youssef

+0

@Youssef - 태그 이름이 ** input **이거나 심지어 모든 텍스트 상자에 클래스 이름을 지정하는 것이 좋습니다. – adatapost

0

당신은을 통해 단순히 루프, 이미 어떻게 든 페이지에 컨트롤을 추가 한 수 있습니다 가정 및 각 기능에 대한 선을 방출 :

<script language="javascript" type="text/javascript"> 
function setVisibility(displayType) { 
    var type = displayType || 'none'; 

    <% foreach (var textBox in LstOfBoxes) { %> 
    document.getElementById("<%=textBox.ClientID %>").style.display = displayType; 
    <% } %> 
} 
</script> 

것은 당신이 jQuery를 사용하고 언급하지 않았기 때문에 여기에 그 목록을 쓰지는 않겠지 만, 당신은 실제로 무엇을하는지 조사해야합니다. Graham suggests.

관련 문제