Gewusst wie: Dynamisches Hinzufügen von Zeilen und Zellen zu einem Table-Webserversteuerelement

Aktualisiert: November 2007

Üblicherweise werden Zeilen und Zellen einem Table-Webserversteuerelement zur Laufzeit hinzugefügt. Das Table-Webserversteuerelement wurde eigens für diese Aufgabe entwickelt.

Hinweis:

Verwenden Sie für den visuellen Entwurf einer Tabelle in der Entwurfsansicht ein HtmlTable-Steuerelement. Wenn Sie auch den Inhalt des HtmlTable-Steuerelements programmgesteuert bearbeiten müssen, konvertieren Sie dessen Zeilen und Zellen in HtmlTableRow-Steuerelemente bzw. in HtmlTableCell-Steuerelemente, indem Sie deren runat-Attribut auf server festlegen. Ausführliche Informationen dazu finden Sie unter Konvertieren von HTML-Serversteuerelementen in HTML-Elemente.

Zeilen in einem Table-Webserversteuerelement sind Objekte vomTyp TableRow. Die Rows-Eigenschaft des Table-Steuerelements unterstützt eine Auflistung von TableRow-Objekten. Um der Tabelle eine Zeile hinzuzufügen, fügen Sie dieser Auflistung ein TableRow-Objekt hinzu.

Ebenso hat das TableRow-Objekt eine Cells-Eigenschaft, die eine Objektauflistung vom Typ TableCell unterstützt. Sie fügen einer Zeile Zellen hinzu, indem Sie diese Auflistung bearbeiten.

So fügen Sie einer Tabelle Zeilen und Zellen dynamisch hinzu

  1. Um eine Zeile hinzuzufügen, erstellen Sie ein neues Objekt vom Typ TableRow:

    Dim tRow As New TableRow()
    Table1.Rows.Add(tRow)
    
    TableRow tRow = new TableRow();
    Table1.Rows.Add(tRow);
    
  2. Um einer Zeile Zellen hinzuzufügen, erstellen Sie ein oder mehrere Objekte vom Typ TableCell:

    Dim tCell As New TableCell()
    tRow.Cells.Add(tCell)
    
    TableCell tCell = new TableCell();
    tRow.Cells.Add(tCell);
    
  3. Fügen Sie der neuen Zelle einen Inhalt hinzu. Dazu stehen Ihnen verschiedene Möglichkeiten zur Verfügung, die in der folgenden Tabelle angegeben sind.

    Inhalt

    Vorgehensweise

    Statischer Text

    Legen Sie die Text-Eigenschaft der Zelle fest.

    Steuerelemente

    Deklarieren Sie eine Instanz des Steuerelements, und fügen Sie diese der Controls-Auflistung der Zelle hinzu.

    Sowohl Text als auch Steuerelemente in derselben Zelle

    Deklarieren Sie den Text, indem Sie eine Instanz der Literal-Klasse erstellen. Fügen Sie diese der Controls-Auflistung auf die gleiche Weise wie andere Steuerelemente hinzu.

    Hinweis:

    In der Standardeinstellung werden einer Web Forms-Seite dynamisch hinzugefügte Steuerelemente dem Ansichtszustand der Seite hinzugefügt. Wenn Sie in jeder Schleife Steuerelemente neu erstellen, kann dies bei der Verarbeitung der Seite zu unerwartetem Verhalten führen, da der Ansichtszustand vor dem Neuerstellen der Steuerelemente wiederhergestellt wird. Sie können Problem vermeiden, indem Sie die EnableViewState-Eigenschaft des Containersteuerelements (z. B. des Table-Steuerelements) auf false festlegen. Weitere Informationen finden Sie unter Programmgesteuertes Hinzufügen von ASP.NET-Steuerelementen.

    Das folgende Codebeispiel zeigt, wie einem Table-Steuerelement Zeilen und Zellen hinzugefügt werden. Die Anzahl der Zeilen und Spalten wird durch die Eingabe des Benutzers in zwei Textfeldern bestimmt. Jede Zelle zeigt die Zeilen- und Zellennummer als statischen Text an.

    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);
          }
       }
    }
    

    Das folgende Codebeispiel ähnelt dem vorhergehenden, zeigt aber statischen Text und ein HyperLink-Steuerelement in jeder Zelle an. Das HyperLink-Steuerelement navigiert zu einem Pseudo-URL und übergibt dabei eine Pseudo-Produkt-ID. Da bei diesem Beispiel statischer Text und Steuerelemente gemischt sind, wird der statische Text als ein Literal-Objekt implementiert, das der Controls-Auflistung der Zelle ebenso wie das HyperLink-Steuerelement hinzugefügt wird.

    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);
          }
       }
    }
    

Siehe auch

Referenz

Übersicht über die Table-, TableRow- und TableCell-Webserversteuerelemente