Procedura: aggiungere righe e celle dinamicamente a un controllo server Web Table
Aggiornamento: novembre 2007
Le righe e le celle vengono in genere aggiunte a un controllo server Web Table in fase di esecuzione. Il controllo server Web Table è appositamente progettato per questa attività.
Nota: |
---|
Per progettare una tabella in modo visivo nella visualizzazione Progettazione, utilizzare un controllo HtmlTable. Per modificare il contenuto del controllo HtmlTable a livello di codice, convertire le righe e le celle in controlli HtmlTableRow e HtmlTableCell impostandone l'attributo runat su server. Per ulteriori informazioni, vedere Conversione di controlli server HTML in elementi HTML. |
Le righe incluse in un controllo server Web Table sono oggetti di tipo TableRow. La proprietà Rows del controllo Table supporta un insieme di oggetti TableRow. Per aggiungere una riga alla tabella è necessario aggiungere un oggetto TableRow a questo insieme.
Analogamente, l'oggetto TableRow ha una proprietà Cells che supporta un insieme di oggetti di tipo TableCell. Per aggiungere celle a una riga, è possibile modificare questo insieme.
Per aggiungere righe e celle a una tabella in modo dinamico
Per aggiungere una riga, creare un nuovo oggetto di tipo TableRow:
Dim tRow As New TableRow() Table1.Rows.Add(tRow)
TableRow tRow = new TableRow(); Table1.Rows.Add(tRow);
Per aggiungere celle alla riga, creare uno o più oggetti di tipo TableCell:
Dim tCell As New TableCell() tRow.Cells.Add(tCell)
TableCell tCell = new TableCell(); tRow.Cells.Add(tCell);
Aggiungere il contenuto alla nuova cella. Questa operazione può essere eseguita in vari modi, come illustrato nella tabella che segue.
Per aggiungere
Eseguire questa operazione
Testo statico
Impostare la proprietà Text della cella.
Controlli
Dichiarare un'istanza del controllo e aggiungerla all'insieme Controls della cella.
Testo e controlli nella stessa cella
Dichiarare il testo creando un'istanza della classe Literal, quindi aggiungerlo all'insieme Controls della cella come se fosse un controllo.
Nota: Per impostazione predefinita, i controlli aggiunti in modo dinamico a una pagina Web Form vengono aggiunti allo stato di visualizzazione della pagina. Se si ricreano i controlli a ogni round trip, durante l'elaborazione della pagina possono verificarsi comportamenti imprevisti poiché lo stato di visualizzazione viene ripristinato prima che siano stati ricreati i controlli. Per evitare problemi, impostare la proprietà EnableViewState del controllo contenitore (ad esempio, del controllo Table) su false. Per ulteriori informazioni, vedere Aggiunta di controlli ASP.NET a livello di codice.
Nell'esempio di codice riportato di seguito viene illustrato come aggiungere righe e celle a un controllo Table. Il numero di righe e colonne è determinato dai valori immessi dall'utente in due caselle di testo. In ogni cella viene visualizzato il numero di riga e di cella come testo statico.
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); } } }
Il seguente esempio di codice è simile al precedente, con la differenza che ciascuna cella contiene testo statico e un controllo HyperLink. Il controllo HyperLink consente di passare a un URL di esempio, passando un numero di serie fittizio. Poiché nell'esempio viene utilizzata una combinazione testo statico e controlli, il testo statico viene implementato come un oggetto Literal, aggiunto all'insieme Controls della cella così come il controllo HyperLink.
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); } } }
Vedere anche
Riferimenti
Cenni preliminari sui controlli server Web Table, TableRow e TableCell