2009-12-23 6 views
2

ASP.NET의 System.Web.UI.WebControls.Table 컨트롤에 동적으로 행을 추가하려고합니다. sample code 일부는 찾았지만 한 행만 추가합니다.ASP.NET의 테이블에 행을 동적으로 추가 하시겠습니까?

테이블 행 수가 한 페이지로드에서 다음 페이지로드로 이동하지 않는 것처럼 보입니다. 사용자는 원하는만큼의 행을 추가 할 수 있어야하며 각 행의 데이터를 캡처해야합니다.

무엇이 누락 되었습니까? 아래 코드.

<%@ Page Language="VB" %> 
<script runat="server"> 

    Sub btnAddEmail_Click(ByVal Sender As Object, ByVal e As EventArgs) 

     Dim tr As New TableRow 
     Dim tcLabel As New TableCell 
     Dim tcTextBox As New TableCell 
     Dim newLabel As New Label 
     Dim newTextBox As New TextBox 

     Dim i As Integer = Table1.Rows.Count + 1 

     newLabel.ID = "Email" + Convert.ToString(i) 
     newLabel.Text = "Email" + Convert.ToString(i) 

     newTextBox.ID = "txtEmail" + Convert.ToString(i) 

     tcLabel.Controls.Add(newLabel) 
     tcTextBox.Controls.Add(newTextBox) 

     tr.Cells.Add(tcLabel) 
     tr.Cells.Add(tcTextBox) 

     Table1.Rows.Add(tr) 

    End Sub 

</script> 

<form id="form1" runat="server"> 
<div> 
    <asp:Button runat="server" Text="Add Email" ID="btnAddEmail" 
     onclick="btnAddEmail_Click" /> 
    <asp:Table ID="Table1" runat="server"> 
     <asp:TableRow> 
      <asp:TableCell> 
       <asp:Label ID="Email1" runat="server" Text="Email1"></asp:Label></asp:TableCell> 
      <asp:TableCell> 
       <asp:TextBox ID="txtEmail1" runat="server"></asp:TextBox></asp:TableCell> 
     </asp:TableRow> 
    </asp:Table> 
</div> 
</form> 

답변

4

ASP.NET은 상태 비 저장입니다. 페이지로드 사이에 원하는 모든 데이터를 세션 변수에 유지해야합니다.

세션 변수에 DataTable/DataSet을 저장하고 Table1의 Datasource 속성을 "PageLoad"이벤트의 해당 DataSet에 할당해야합니다. 그런 다음 "클릭"이벤트에서 Session 변수의 DataSet에 행을 추가하십시오.

당신은 어쩌면 수 당신이하고자하는 컨트롤 ViewState="true"을 설정하는

업데이트는 포스트 백을 통해 데이터를 유지.

+0

감사합니다. 도움이 되겠지만 아직 답변에 투표하는 "평판"이 없습니다. :) "이 테이블의 행 수와 다시 게시 할 때의 데이터를 유지하십시오."라는 간단한 방법이 있었으면합니다. AutoEventWireup과 같은 일종의 구성 옵션은 True입니다. 그러나 이벤트 처리기와 관련이 있습니다. 매우 간단한 페이지에 이것을 사용하고 있습니다. – jtherkel

관련 문제