DataTable objects store data tables, and as such, they're central to datasets and data views (for more on data views, see "Using Data Views" in Chapter 20). In code, you create data tables and then add the fields in each row to them. For example, here's how I create a new table named Table1 in the DataTableCode example on the CD-ROM that we'll see in the "Creating a Data Table in Code" topic in this chapter. Note that after creating the table, I create a new DataColumn object, configure it, and add it to the table's Columns collection:
The DataTableCode example in the "Creating a Data Table in Code" topic creates a data table and uses it to create a dataset, which is then bound to a data grid, so in fact this example creates a dataset from scratch and fills it with data—no connection to a database needed.
To add rows to a DataTable, you use the NewRow method to return a new DataRow object, because the NewRow method returns a row with the schema of the DataTable. Then you add data to the fields in the row, referring to them by name or index, and add the row back to the table's Rows collection. Here's how that looks in the DataTableCode example:
Row1 = Table1.NewRow() Row1("First Name") = "Ralph" Row1("Last Name") = "Kramden" Row1("ID") = 1 Row1("Phone") = "(555) 111-2222" Table1.Rows.Add(Row1)
If you're interested, the maximum number of rows that a data table can have is 16,777,216.
How do you bind a table in code to a control like a data grid to display it? You can add it to a dataset, and bind that dataset to the data grid, like this:
Dim ds As New DataSet() ds = New DataSet() ds.Tables.Add(Table1) DataGrid1.SetDataBinding(ds, "Employees")
To find out when changes are made to a table, you can use one of the following events: RowChanged, RowChanging, RowDeleting, and RowDeleted.