2011-09-26 2 views
1

C#Visual Studio에 사용 중입니다. 이전 페이지의 입력에 따라 웹 양식과 번호가 Textboxes 인 자동 번호를 생성하고 싶습니다. 이 루프를 수행하는 가장 좋은 방법은 무엇입니까? 예를 들어asp.net 자동 웹 양식의 텍스트 상자 ID 생성

:

다음 페이지

  • "NAME1"
  • "NAME2"
  • "NAME3"
  • 의 ID와 텍스트 박스를 생성한다 (4)

    입력된다

  • "name4"
이 같은

뭔가 :

<asp:TextBox ID="name1" runat="server"></asp:TextBox> 
<asp:TextBox ID="name2" runat="server"></asp:TextBox> 
<asp:TextBox ID="name3" runat="server"></asp:TextBox> 
<asp:TextBox ID="name4" runat="server"></asp:TextBox> 

제 2 부 제 질문의 내가 Button 클릭 때 그들을 호출 할 경우, 어떻게 루프 그 ID를 얻을를 사용한다는 것입니다? 루프 PlaceHolder 제어를위한

답변

0
for (int i=0; i<4; i++) 
{ 
    TextBox t = new TextBox(); 
    t.ID = "name" + i.ToString(); 

    this.Controls.Add(t); 
} 
+0

그는 또한 결과 컨트롤이 끝나는 곳을 제어 할 수있는 자리 표시 자 컨트롤을 사용한다 페이지에서. –

+0

'this.Controls.Add'는 예제 일뿐입니다. –

+0

TextBox를 Button으로 캐스팅하면 예외가 발생합니다 !!! – Burimi

2

를 사용하여 동적 TextBox 컨트롤

<asp:PlaceHolder ID="phDynamicTextBox" runat="server" /> 

int inputFromPreviousPost = 4; 
for(int i = 1; i <= inputFromPreviousPost; i++) 
{ 
    TextBox t = new TextBox(); 
    t.ID = "name" + i.ToString(); 
} 

//on button click retrieve controls inside placeholder control 
protected void Button_Click(object sender, EventArgs e) 
{ 
    foreach(Control c in phDynamicTextBox.Controls) 
    { 
     try 
     { 
      TextBox t = (TextBox)c; 

      // gets textbox ID property 
      Response.Write(t.ID); 
     } 
     catch 
     { 

     } 
    } 
} 
1

제공에 제어 요구 횟수만큼 루프를 말함으로써 당신은 페이지 Init 이벤트 처리기에서 이러한 컨트롤을 만들 수를 만들 수 있습니다 .

동적 컨트롤이므로 포스트 백 중에 다시 만들어야하며 자동으로 수행되지 않습니다.

또한 Dynamic controls and postback

1

확인이 코드. 당신은 쿼리 문자열에서 값을 얻을 컨트롤을 만들 수있는 두 번째 페이지에서 첫 번째 페이지에서 ...

protected void Button1_Click(object sender, EventArgs e) 
    {   
    Response.Redirect("Default.aspx?Name=" + TextBox1.Text); 
    } 

동적

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.QueryString["Name"] != null) 
      Response.Write(Request.QueryString["Name"]); 

      Int32 howmany = Int32.Parse(Request.QueryString["Name"]); 

      for (int i = 1; i < howmany + 1; i++) 
      { 
       TextBox tb = new TextBox(); 
       tb.ID = "name" + i; 
       form1.Controls.Add(tb); 
      } 
    }