Copy a DataTable
The DataTable class represents one table of in-memory data. The
DataTable objects are conditionally case-sensitive. To create a DataTable
programmatically the asp.net developers must first define its schema by adding
DataColumn objects to the DataColumnCollection. To add rows to a DataTable,
the developers must use the NewRow() method to return a new DataRow object at
first. The DataTable also contains a collection of Constraint objects that can
be used to ensure the integrity of the data.
The following asp.net c# tutorial code demonstrates how we can copy a DataTable. Here we used the DataTable class Copy() method to copy a DataTable instance.
The DataTable class Copy() method copies both the structure and data for this DataTable. The Copy() method returns a new DataTable. This method returns a new DataTable with the same structure and data as this DataTable.
The DataTable Copy() method creates a new DataTable with the same structure and data as the original DataTable. To copy the structure to a new DataTable without data the asp.net web developers have to use Clone() method.
The following asp.net c# tutorial code demonstrates how we can copy a DataTable. Here we used the DataTable class Copy() method to copy a DataTable instance.
The DataTable class Copy() method copies both the structure and data for this DataTable. The Copy() method returns a new DataTable. This method returns a new DataTable with the same structure and data as this DataTable.
The DataTable Copy() method creates a new DataTable with the same structure and data as the original DataTable. To copy the structure to a new DataTable without data the asp.net web developers have to use Clone() method.
ComboBoxChangeDataSource.aspx
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html>
<script runat="server">
protected void Button1_Click(object sender, System.EventArgs e)
{
DataTable dt = new DataTable();
dt.TableName = "Books";
DataColumn dc1 = new DataColumn();
dc1.ColumnName = "BookID";
dc1.DataType = typeof(int);
dc1.AllowDBNull = false;
dc1.Unique = true;
DataColumn dc2 = new DataColumn();
dc2.ColumnName = "BookName";
dc2.DataType = typeof(string);
DataColumn dc3 = new DataColumn();
dc3.ColumnName = "Author";
dc3.DataType = typeof(string);
dt.Columns.AddRange(new DataColumn[] { dc1, dc2, dc3 });
dt.Rows.Add(new object[] { 1, "WordPress 2.8 Theme Design", "Tessa Blakeley Silver" });
dt.Rows.Add(new object[] { 2, "WordPress and Flash 10x Cookbook", "Peter Spannagle, Sarah Soward" });
dt.AcceptChanges();
GridView1.DataSource = dt;
GridView1.DataBind();
DataTable myCopyDataTable;
//this line make a copy of 'Books' DataTable
myCopyDataTable = dt.Copy();
myCopyDataTable.TableName = "AllBooks";
myCopyDataTable.Rows.Add(new object[] { 3, "WordPress 3 Search Engine Optimization", "Michael David" });
//uncomment that line to get an error message because
//Clone DataTable keeps original DataTable schemas and constraints
//myCopyDataTable.Rows.Add(new object[] { 3, "WordPress 3 Search Engine Optimization", "Michael David" });
myCopyDataTable.AcceptChanges();
Label1.Text = "Copy of the DataTable. Using DataTable.Copy Method";
Label1.Text += "<br />After copy we insert a new row<br />";
GridView2.DataSource = myCopyDataTable;
GridView2.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>How to copy both structure and data from one DataTable to another DataTable in ado.net</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2 style="color:DarkBlue; font-style:italic;">
How to copy both structure and data from
<br /> one DataTable to another DataTable in ado.net
</h2>
<hr width="525" align="left" color="CornFlowerBlue" />
<asp:GridView
ID="GridView1"
runat="server"
BorderColor="Snow"
ForeColor="Snow"
Width="525"
>
<HeaderStyle BackColor="DarkOrchid" />
<RowStyle BackColor="OrangeRed" />
<AlternatingRowStyle BackColor="DeepPink" />
</asp:GridView>
<br />
<asp:Label
ID="Label1"
runat="server"
Font-Size="Large"
ForeColor="DodgerBlue"
Font-Italic="true"
>
</asp:Label>
<br />
<asp:GridView
ID="GridView2"
runat="server"
BorderColor="Snow"
ForeColor="Snow"
Width="525"
ShowHeaderWhenEmpty="true"
>
<HeaderStyle BackColor="DarkOrchid" />
<RowStyle BackColor="OrangeRed" />
<AlternatingRowStyle BackColor="DeepPink" />
</asp:GridView>
<br />
<asp:Button
ID="Button1"
runat="server"
OnClick="Button1_Click"
Text="Populate GridView"
Height="45"
Font-Bold="true"
ForeColor="DodgerBlue"
/>
</div>
</form>
</body>
</html>