방법: Table 웹 서버 컨트롤에 행과 셀을 동적으로 추가

업데이트: 2007년 11월

일반적으로 런타임에 행과 셀을 Table 웹 서버 컨트롤에 추가합니다. Table 웹 서버 컨트롤은 이 작업을 위해 특별히 설계되었습니다.

참고:

디자인 뷰에서 테이블을 시각적으로 디자인하려면 HtmlTable 컨트롤을 사용합니다. HtmlTable 컨트롤의 내용을 프로그래밍 방식으로도 조작해야 할 경우 이 컨트롤의 행과 셀의 runat 특성을 server로 설정하여 이 행과 셀을 각각 HtmlTableRowHtmlTableCell 컨트롤로 변환합니다. 자세한 내용은 HTML 서버 컨트롤을 HTML 요소로 변환을 참조하십시오.

Table 웹 서버 컨트롤의 행은 TableRow 형식 개체입니다. Table 컨트롤의 Rows 속성은 TableRow 개체 컬렉션을 지원합니다. 테이블에 행을 추가하려면 이 컬렉션에 TableRow 개체를 추가합니다.

이와 비슷하게 TableRow 개체에는 TableCell 형식 개체의 컬렉션을 지원하는 Cells 속성이 있습니다. 이 컬렉션을 조작하여 행에 셀을 추가할 수 있습니다.

행과 셀을 테이블에 동적으로 추가하려면

  1. TableRow 형식 개체를 만들어 행을 추가합니다.

    Dim tRow As New TableRow()
    Table1.Rows.Add(tRow)
    
    TableRow tRow = new TableRow();
    Table1.Rows.Add(tRow);
    
  2. TableCell 형식 개체를 하나 이상 만들어 행에 셀을 추가합니다.

    Dim tCell As New TableCell()
    tRow.Cells.Add(tCell)
    
    TableCell tCell = new TableCell();
    tRow.Cells.Add(tCell);
    
  3. 새로 만든 셀에 내용을 추가합니다. 다음 표에 나와 있는 여러 방법으로 내용을 추가할 수 있습니다.

    추가 대상

    작업 방법

    정적 텍스트

    셀의 Text 속성을 설정합니다.

    컨트롤

    컨트롤의 인스턴스를 선언하고 이를 셀의 Controls 컬렉션에 추가합니다.

    동일한 셀의 텍스트와 컨트롤 모두

    Literal 클래스의 인스턴스를 만들어서 텍스트를 선언합니다. 다른 컨트롤과 마찬가지로 이를 셀의 Controls 컬렉션에 추가합니다.

    참고:

    기본적으로 Web Forms 페이지에 동적으로 추가하는 컨트롤은 페이지의 뷰 상태에도 추가됩니다. 각 라운드트립마다 컨트롤을 다시 만들도록 하면 컨트롤이 다시 만들어지기 전에 뷰 상태가 복원되기 때문에 페이지를 처리할 때 예상하지 못한 동작이 발생할 수 있습니다. Table 컨트롤과 같은 컨테이너 컨트롤의 EnableViewState 속성을 false로 설정하여 이러한 문제를 방지할 수 있습니다. 자세한 내용은 프로그래밍 방식으로 ASP.NET 컨트롤 추가를 참조하십시오.

    다음 코드 예제에서는 Table 컨트롤에 행과 셀을 추가하는 방법을 보여 줍니다. 행과 열 수는 사용자가 두 텍스트 상자에 입력하는 개수에 따라 결정됩니다. 각 셀에는 행과 셀 개수가 정적 텍스트로 표시됩니다.

    Protected Sub Button1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
       ' Total number of rows.
       Dim rowCnt As Integer
       ' Current row count
       Dim rowCtr As Integer
       ' Total number of cells (columns).
       Dim cellCtr As Integer
       ' Current cell counter.
       Dim cellCnt As Integer
    
       rowCnt = CInt(Textbox1.Text)
       cellCnt = CInt(Textbox2.Text)
    
       For rowCtr = 1 To rowCnt
          Dim tRow As New TableRow()
          For cellCtr = 1 To cellCnt
             Dim tCell As New TableCell()
             tCell.Text = "Row " & rowCtr & ", Cell " & cellCtr
             ' Add new TableCell object to row.
             tRow.Cells.Add(tCell)
          Next
          ' Add new row to table.
          Table1.Rows.Add(tRow)
       Next
    
    End Sub
    
    protected void Button1_Click (object sender, System.EventArgs e)
    {
       // Total number of rows.
       int rowCnt;
       // Current row count.
       int rowCtr;
       // Total number of cells per row (columns).
       int cellCtr;
       // Current cell counter
       int cellCnt;
    
       rowCnt = int.Parse(TextBox1.Text);
       cellCnt = int.Parse(TextBox2.Text);
    
       for(rowCtr=1; rowCtr <= rowCnt; rowCtr++) {
          // Create new row and add it to the table.
          TableRow tRow = new TableRow();
          Table1.Rows.Add(tRow);
          for (cellCtr = 1; cellCtr <= cellCnt; cellCtr++) {
             // Create a new cell and add it to the row.
             TableCell tCell = new TableCell();
             tCell.Text = "Row " + rowCtr + ", Cell " + cellCtr;
             tRow.Cells.Add(tCell);
          }
       }
    }
    

    다음 코드 예제에서는 이전 예제와 비슷하지만 각 셀에 정적 텍스트와 HyperLink 컨트롤을 표시합니다. HyperLink 컨트롤은 가상 URL을 탐색하여 가상 제품 ID를 전달합니다. 예제에서는 정적 텍스트와 컨트롤을 결합하기 때문에 정적 텍스트는 Literal 개체로 구현되어 있으며 이 개체는 HyperLink 컨트롤과 마찬가지로 셀의 Controls 컬렉션에 추가됩니다.

    Protected Sub Button1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
       ' Total number of rows.
       Dim rowCnt As Integer
       ' Current row count
       Dim rowCtr As Integer
       ' Total number of cells (columns).
       Dim cellCtr As Integer
       ' Current cell counter.
       Dim cellCnt As Integer
    
       rowCnt = CInt(TextBox1.Text)
       cellCnt = CInt(TextBox2.Text)
    
       For rowCtr = 1 To rowCnt
          Dim tRow As New TableRow()
          For cellCtr = 1 To cellCnt
             Dim tCell As New TableCell()
             ' Mock up a product ID
             Dim prodID As String
             prodID = rowCtr & "_" & cellCtr
    
             ' Create literal text as control.
             Dim s As New LiteralControl()
             s.Text = "Buy: "
             ' Add to cell.
             tCell.Controls.Add(s)
             ' Create Hyperlink Web Server control and add to cell.
             Dim h As New HyperLink()
             h.Text = rowCtr & ":" & cellCtr
             h.href = "https://www.microsoft.com/net"
             ' Add cell to row.
             tCell.Controls.Add(h)
             ' Add new TableCell object to row.
             tRow.Cells.Add(tCell) 
          Next cellCtr
          ' Add new row to table.
          Table1.Rows.Add(tRow) 
       Next rowCtr
    End Sub
    
    Protected void Button1_Click (object sender, System.EventArgs e)
    {
       // Total number of rows.
       int rowCnt;
       // Current row count.
       int rowCtr;
       // Total number of cells per row (columns).
       int cellCtr;
       // Current cell counter.
       int cellCnt;
    
    
       rowCnt = int.Parse(TextBox1.Text);
       cellCnt = int.Parse(TextBox2.Text);
    
       for(rowCtr=1; rowCtr <= rowCnt; rowCtr++) {
          // Create a new row and add it to the table.
          TableRow tRow = new TableRow();
          Table1.Rows.Add(tRow);
          for (cellCtr = 1; cellCtr <= cellCnt; cellCtr++) {
             // Create a new cell and add it to the row.
             TableCell tCell = new TableCell();
             tRow.Cells.Add(tCell);               
             // Mock up a product ID.
             string prodID = rowCtr + "_" + cellCtr;
    
             // Add a literal text as control.
             tCell.Controls.Add(new LiteralControl("Buy: "));
             // Create a Hyperlink Web server control and add it to the cell.
             System.Web.UI.WebControls.HyperLink h = new HyperLink();
             h.Text = rowCtr + ":" + cellCtr;
             h.href = "https://www.microsoft.com/net";
             tCell.Controls.Add(h);
          }
       }
    }
    

참고 항목

참조

Table, TableRow 및 TableCell 웹 서버 컨트롤 개요