c# - How to add a new row to the DataView

Add a new row to a DataView
The DataView is a customized view of a DataTable for sorting, filtering, searching, editing, and navigation. The DataView does not store data. When the asp.net developer changes the DataView's data that will affect the DataTable. But when they change the DataTable's data that will affect all associated DataViews. The DataView is much like a database view.

The following asp.net c# tutorial code demonstrates how we can add a new row to a DataView. Here we used the DataView class AddNew() method to add a new row to a DataView instance.

The DataView class AddNew() method adds a new row to the DataView. The AddNew() method returns a new DataRowView object. The DataRowView class represents a customized view of a DataRow. After adding the row to the DataView we can insert data into the row for specified columns.

The DataRowView class EndEdit() method commits changes to the underlying DataRow and ends the editing session that was begun with BeginEdit() method. The asp.net developers can use CancelEdit() method to discard the changes made to the DataRow. Finally, the asp.net c# developers can add a new row to the DataView by using DaatView class AddNew() method and DataRowView class EndEdit() method.
DataViewAddNewMethod.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 = "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, "Joomla", "Joomla! 1.5 JavaScript jQuery", "Jose Argudo Blanco" });
        dt.Rows.Add(new object[] { 2, "jQuery", "ASP.NET jQuery Cookbook", "Sonal Aneel Allana" });
        dt.AcceptChanges();

        GridView1.DataSource = dt.DefaultView;
        GridView1.DataBind();

        //this line create a new DataView
        DataView dView = new DataView(dt);
        dView.Sort = "BookName DESC" ;

        Label1.Text = "Here we create a new DataView<br />" +
                      "and set the sort order (BookName DESC)";

        GridView2.DataSource = dView;
        GridView2.DataBind();

        DataRowView drv = dView.AddNew();
        drv["BookID"] = 3;
        drv["Category"] = "Games";
        drv["BookName"] = "Unity Game Development Essentials";
        drv["Author"] = "Will Goldstone";
        drv.EndEdit();

        Label2.Text = "Here we add a new row to the DataView, Now the DataView is...";
        GridView3.DataSource = dView;
        GridView3.DataBind();

        Label3.Text = "Now the source DataTable is...";
        GridView4.DataSource = dt;
        GridView4.DataBind();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>How to use DataView AddNew Method to add a new row to the DataView in ado.net</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:DarkBlue; font-style:italic;">
            How to use DataView AddNew Method
            <br /> to add a new row to the DataView in ado.net
        </h2>
        <hr width="575" align="left" color="CornFlowerBlue" />
        <asp:GridView 
            ID="GridView1"
            runat="server"
            BorderColor="Snow"
            ForeColor="Snow"
            Width="700"
            Font-Names="Courier"
            >
            <HeaderStyle BackColor="DarkBlue" Height="30" />
            <RowStyle BackColor="Orange" />
            <AlternatingRowStyle BackColor="DarkOrange" />
        </asp:GridView>
        <asp:Label
             ID="Label1"
             runat="server"
             Font-Size="Large"
             ForeColor="DodgerBlue"
             Font-Italic="true"
             >
        </asp:Label>
        <asp:GridView 
            ID="GridView2"
            runat="server"
            BorderColor="Snow"
            ForeColor="Snow"
            Width="700"
            Font-Names="Courier"
            >
            <HeaderStyle BackColor="CadetBlue" Height="30" />
            <RowStyle BackColor="Orange" />
            <AlternatingRowStyle BackColor="DarkOrange" />
        </asp:GridView>
        <asp:Label
             ID="Label2"
             runat="server"
             Font-Size="Large"
             ForeColor="DodgerBlue"
             Font-Italic="true"
             >
        </asp:Label>
        <asp:GridView 
            ID="GridView3"
            runat="server"
            BorderColor="Snow"
            ForeColor="Snow"
            Width="700"
            Font-Names="Courier"
            >
            <HeaderStyle BackColor="CadetBlue" Height="30" />
            <RowStyle BackColor="Orange" />
            <AlternatingRowStyle BackColor="DarkOrange" />
        </asp:GridView>
        <asp:Label
             ID="Label3"
             runat="server"
             Font-Size="Large"
             ForeColor="DodgerBlue"
             Font-Italic="true"
             >
        </asp:Label>
        <asp:GridView 
            ID="GridView4"
            runat="server"
            BorderColor="Snow"
            ForeColor="Snow"
            Width="700"
            Font-Names="Courier"
            >
            <HeaderStyle BackColor="DarkBlue" Height="30" />
            <RowStyle BackColor="Orange" />
            <AlternatingRowStyle BackColor="DarkOrange" />
        </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>
More c# examples