Sunday, May 15, 2011

DataView ToTable method to create a new DataTable in ado.net




DataViewToTableMethod.aspx

<%@ Page Language="C#" AutoEventWireup="true" %>  
<%@ Import Namespace="System.Data" %>  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<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 = "Category";  
        dc2.DataType = typeof(string);  
  
        DataColumn dc3 = new DataColumn();  
        dc3.ColumnName = "BookName";  
        dc3.DataType = typeof(string);  
  
        DataColumn dc4 = new DataColumn();  
        dc4.ColumnName = "Author";  
        dc4.DataType = typeof(string);  
  
        dt.Columns.AddRange(new DataColumn[] { dc1, dc2, dc3, dc4 });  
  
        dt.Rows.Add(new object[] { 1, "iPhone", "iPhone User Interface Cookbook: RAW", "Cameron Banga" });  
        dt.Rows.Add(new object[] { 2, "MySQL", "MySQL 5.1 Plugin Development", "Andrew Hutchings, Sergei Golubchik" });  
        dt.Rows.Add(new object[] { 3, "MySQL", "MySQL Admin Cookbook", "Daniel Schneller, Udo Schwedt" });  
        dt.AcceptChanges();  
  
        Label1.Text = "Source DataTable";  
        GridView1.DataSource = dt.DefaultView;  
        GridView1.DataBind();  
  
        //this line create a new DataView  
        DataView dView = new DataView(dt);  
        dView.RowFilter = "Category = 'MySQL'";  
  
        Label2.Text = "Here we create a new DataView<br />" +  
                      "and set the RowFilter (Category = 'MySQL')";  
  
        GridView2.DataSource = dView;  
        GridView2.DataBind();  
  
        //this line create a new DataTable from DataView  
        DataTable dt2 = dView.ToTable();  
  
        Label3.Text = "Here we create a new DataTable from DataView";  
        GridView3.DataSource = dt2;  
        GridView3.DataBind();  
    }  
</script>  
  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head id="Head1" runat="server">  
    <title>How to use DataView ToTable method to create a new DataTable in ado.net</title>  
</head>  
<body>  
    <form id="form1" runat="server">  
    <div>  
        <h2 style="color:DarkBlue; font-style:italic;">  
            How to use DataView ToTable method  
            <br /> to create a new DataTable in ado.net  
        </h2>  
        <hr width="450" align="left" color="CornFlowerBlue" />  
        <asp:Label  
             ID="Label1"  
             runat="server"  
             Font-Size="Large"  
             ForeColor="DodgerBlue"  
             Font-Italic="true"  
             >  
        </asp:Label>  
        <asp:GridView   
            ID="GridView1"  
            runat="server"  
            BorderColor="Snow"  
            ForeColor="Snow"  
            Width="600"  
            Font-Names="Courier"  
            >  
            <HeaderStyle BackColor="DarkSlateBlue" Height="30" />  
            <RowStyle BackColor="MediumVioletRed" />  
            <AlternatingRowStyle BackColor="PaleVioletRed" />  
        </asp:GridView>  
        <br />  
        <asp:Label  
             ID="Label2"  
             runat="server"  
             Font-Size="Large"  
             ForeColor="DodgerBlue"  
             Font-Italic="true"  
             >  
        </asp:Label>  
        <asp:GridView   
            ID="GridView2"  
            runat="server"  
            BorderColor="Snow"  
            ForeColor="Snow"  
            Width="600"  
            Font-Names="Courier"  
            >  
            <HeaderStyle BackColor="DarkSlateBlue" Height="30" />  
            <RowStyle BackColor="MediumVioletRed" />  
            <AlternatingRowStyle BackColor="PaleVioletRed" />  
        </asp:GridView>  
        <br />  
        <asp:Label  
             ID="Label3"  
             runat="server"  
             Font-Size="Large"  
             ForeColor="DodgerBlue"  
             Font-Italic="true"  
             >  
        </asp:Label>  
        <asp:GridView   
            ID="GridView3"  
            runat="server"  
            BorderColor="Snow"  
            ForeColor="Snow"  
            Width="600"  
            Font-Names="Courier"  
            >  
            <HeaderStyle BackColor="DarkSlateBlue" Height="30" />  
            <RowStyle BackColor="MediumVioletRed" />  
            <AlternatingRowStyle BackColor="PaleVioletRed" />  
        </asp:GridView>  
        <asp:Button   
            ID="Button1"  
            runat="server"  
            OnClick="Button1_Click"  
            Text="Populate GridView"  
            Height="45"  
            Font-Bold="true"  
            ForeColor="DodgerBlue"  
            />  
    </div>  
    </form>  
</body>  
</html>