Table Control: 23.1 How to create a table control dynamically to populate data?
VB.NET
Dim mycn As SqlConnection Dim myda As SqlDataAdapter Dim ds As DataSet mycn=NewSqlConnection("server=localhost;uid=sa;password=;database=northwind") myda = New SqlDataAdapter("Select Employeeid, FirstName , LastName from employees", mycn) ds = New DataSet myda.Fill(ds, "Employees") Dim dc As DataColumn Dim dr As DataRow For Each dr In ds.Tables(0).Rows Dim trow As New TableRow For Each dc In ds.Tables(0).Columns Dim tcell As New TableCell tcell.Controls.Add(New LiteralControl(dr(dc.ColumnName).ToString)) trow.Cells.Add(tcell) Next Table1.Rows.Add(trow) Next
C#
SqlConnection mycn ; SqlDataAdapter myda ; DataSet ds ; mycn=newSqlConnection("server=localhost;uid=sa;password=;database=northwind"); myda = new SqlDataAdapter("Select Employeeid, FirstName , LastName from employees", mycn); ds = new DataSet(); myda.Fill(ds, "Employees"); TableRow trow ; TableCell tcell; foreach (DataRow dr in ds.Tables[0].Rows) { trow = new TableRow (); foreach( DataColumn dc in ds.Tables[0].Columns) { tcell= new TableCell (); tcell.Controls.Add(new LiteralControl(dr[dc.ColumnName].ToString())); trow.Cells.Add(tcell); } Table1.Rows.Add(trow); }
23.2 How to limit table cell size with long strings? Set style property for the table cell as
style="WORD-BREAK:break-all"
23.3 How to use a Table control to display data vertically?
VB.NET
'Populate the DataSet ds Dim dr As DataRow For Each dc In ds.Tables(0).Columns Dim trow As New TableRow() Dim tcellcolname As New TableCell() 'To Display the Column Names For Each dr In ds.Tables(0).Rows tcellcolname.Text = dc.ColumnName trow.BackColor = System.Drawing.Color.Beige tcellcolname.BackColor = System.Drawing.Color.AliceBlue 'Populate the TableCell with the Column Name tcellcolname.Controls.Add(New LiteralControl(dc.ColumnName.ToString)) Next trow.Cells.Add(tcellcolname) 'To Display the Column Data For Each dr In ds.Tables(0).Rows Dim tcellcoldata As New TableCell() 'Populate the TableCell with the Column Data tcellcoldata.Controls.Add(New LiteralControl(dr(dc.ColumnName).ToString)) trow.Cells.Add(tcellcoldata) Next Table1.Rows.Add(trow) Next
C#
//Populate the DataSet ds foreach(DataColumn dc in ds.Tables[0].Columns ) { TableRow trow = new TableRow(); TableCell tcellcolname = new TableCell() ; foreach(DataRow dr in ds.Tables[0].Rows ) { tcellcolname.Text = dc.ColumnName ; trow.BackColor = System.Drawing.Color.Beige ; tcellcolname.BackColor = System.Drawing.Color.AliceBlue ; //Populate the TableCell with the Column Name tcellcolname.Controls.Add(new LiteralControl(dc.ColumnName.ToString())) ; } trow.Cells.Add(tcellcolname) ; //To Display the Column Data
foreach(DataRow dr in ds.Tables[0].Rows ) { TableCell tcellcoldata =new TableCell() ; //Populate the TableCell with the Column Data tcellcoldata.Controls.Add(new LiteralControl(dr[dc.ColumnName].ToString())) ; trow.Cells.Add(tcellcoldata); } Table1.Rows.Add(trow) ; }
23.4 Are there any IE specific performance imporvement possible with Table Layout? In IE5 and later, significantly faster Table Rendering is now possible. Here is some information in MSDN : Enhancing Table Presentation. Among other things, you can specific col specific widths using the colgroup tag or col tag and also set the visibility of rows and columns using special styles.