2012-06-28 2 views
0

동적으로 생성 된 테이블이 있으며 테이블의 각 행마다 사용자가 양식을 완료 한 후 제출할 수있는 몇 가지 양식 텍스트 상자가 있습니다. 문제는 내가 제출 한이 필드 내의 값에 액세스하는 것입니다.동적으로 생성 된 테이블 내에서 FindControl을 찾을 수 없습니다.

<input name="ctl00$ContentPlaceHolder1$tChildName1" type="text" value="Test Name" id="tChildName1" /> 

아래의 코드는 내가 테스트 만 사용하고 무엇인가

표는이 내가 액세스를 시도하고있어 텍스트 상자 중 하나에 의해 생성 된 HTML이

이드의 = tableAssigneeChildren있다 위의 텍스트 상자에 액세스 할 수있는 경우 :

Protected Sub btnSubmit_Click(sender As Object, e As System.EventArgs) Handles btnSubmit.Click 

    Dim childId As Integer 

    For childId = 1 To CInt(iChild.Value) 

     Response.Write(DirectCast(tableAssigneeChildren.FindControl("tChildName" & childId), TextBox).Text & "<br />") 

    Next 

End Sub 

미리 도움을 청하십시오. J.

답변

1

모든 포스트 백에서 동적으로 생성 된 컨트롤이 손실됩니다. 다음 이유 때문에 표를 추가하는 것이 좋습니다.

  1. 사용자 정의 컨트롤에 문제가있는 경우가 종종 있습니다.

  2. 대신 usercontrols가 마크 업에 존재하지 않기 때문에 사용자 제어 이벤트가 시작되지 않습니다. 동적으로 생성됩니다.

  3. 속도 (페이지 크기)에는 차이가 없습니다. 필요에 따라 가시성을 전환 할 수 있습니다.

  4. 훨씬 깨끗하고 우아한 솔루션입니다.

당신은 정말, 동적으로 테이블을 추가해야 할이 질문에 Dynamic Controls and Postback에서 모양과 http://www.4guysfromrolla.com/articles/092904-1.aspx

+1

덕분에 빨리 내가 ​​'동적으로 생성 된 컨트롤은 모든 게시에 손실'읽을 문제를 분류이 튜토리얼이 어쨌든 경우 If Not Page.IsPostBack Then 구문 내에서 테이블을 만드는 기능이 있습니다. 그 내용이 데이터베이스 내에서 데이터에 의존하므로 동적으로 생성 된 테이블을 사용해야합니다. 그래도 도와 ​​줘서 고마워. – JBoom