Asp.net programming we consider all important topic for knowledge about controls,web Services, JSON, Ajax, database, and interview related Question. In this Asp.net and sql server tutorial blog we give many examples of jquery as like How Play YouTube Video in Your Asp.net Website by URL, How to Play YouTube Videos in Asp.net by using Jquery , Jquery Change div background on mouseover in asp.net , JQuery UI Datepicker (Calendar) etc.

Thursday, June 25, 2015

how to Save DataTable Into ViewState and Bind Gridview in ASP.Net C#

DataTable Into ViewState and Bind Gridview in ASP.Net C#:



 how to save a DataTable in Viewstate and display those records in a GridView without saving in the database. In consideration of those requirements I decided to write an article on it. So let us start creating a web application as:

  1. "Start" - "All Programs" - "Microsoft Visual Studio 2010".
  2. "File" - "New WebSite" - "C#" - "Empty WebSite" (to avoid adding a master page).
  3. Provide the web site a name such as "SaveDataTableInViewsate" or another as you wish and specify the location.
  4. Then right-click on Solution Explorer - "Add New Item" - Add Web Form.
  5. Drag and drop one button and three textBoxes onto the <form> section of the Default.aspx page.
  6. Now the default.aspx page source code will look such as follows.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
<head runat="server"
    <title></title> 
</head> 
<body style="background-color: #0000FF"
    <form id="form1" runat="server"
    <table style="color: White;margin-top:30px;margin-left:10px"
        <tr> 
            <td> 
                Author Name 
            </td> 
            <td> 
                Book Name 
            </td> 
            <td> 
                Book Type 
            </td> 
            <td> 
                Publisher 
            </td> 
        </tr> 
        <tr> 
            <td> 
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
            </td> 
            <td> 
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
            </td> 
            <td> 
                <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> 
            </td> 
            <td> 
                <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> 
            </td> 
        </tr> 
        <tr> 
            <td> 
            </td> 
            <td> 
            </td> 
            <td> 
            </td> 
            <td> 
                <asp:Button ID="AddProduct" runat="server" Style="color: White" Text="Add Product" 
                    OnClick="AddProduct_Click" BackColor="#999966" /> 
            </td> 
        </tr>  
    </table> 
    
    <div style="margin-left:10px;margin-top:10px"
     <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" CellPadding="4" 
        ForeColor="#333333" GridLines="None"
        <AlternatingRowStyle BackColor="White" /> 
        <Columns> 
            <asp:BoundField HeaderStyle-Width="120px" HeaderText="Author  Name" DataField="AuthorName" /> 
            <asp:BoundField HeaderStyle-Width="120px" HeaderText=" Book Name" DataField="BookName" /> 
            <asp:BoundField HeaderStyle-Width="120px" HeaderText=" Book Type" DataField="BookType" /> 
            <asp:BoundField HeaderStyle-Width="120px" HeaderText="Publisher" DataField="Publisher" /> 
        </Columns> 
        <EditRowStyle BackColor="#2461BF" /> 
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
        <RowStyle BackColor="#EFF3FB" /> 
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
        <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
        <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
        <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
        <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
    </asp:GridView> 
    </div> 
    </form> 
</body> 
</html> 

Now switch to the default.aspx.cs code behind file and write the following code to create and save the datatable into viewstate and bind the GridView as:
    private void AddDefaultFirstRecord() 
     { 
         //creating dataTable  
         DataTable dt = new DataTable(); 
         DataRow dr; 
         dt.TableName = "AuthorBooks"
         dt.Columns.Add(new DataColumn("AuthorName", typeof(string))); 
         dt.Columns.Add(new DataColumn("BookName", typeof(string))); 
         dt.Columns.Add(new DataColumn("BookType", typeof(string))); 
         dt.Columns.Add(new DataColumn("Publisher", typeof(string))); 
         dr = dt.NewRow(); 
         dt.Rows.Add(dr); 
         //saving databale into viewstate  
         ViewState["AuthorBooks"] = dt; 
         //bind Gridview 
         GridView1.DataSource = dt; 
         GridView1.DataBind(); 
     }
 Now call the above function at Page Load so that the initial records will be added into the view state and GridView as
protected void Page_Load(object sender, EventArgs e) 
    { 
        if (!IsPostBack) 
        { 
            AddDefaultFirstRecord(); 
        } 
    }
Now create a function with the following code that will save the records into a data table using view state and will be available to be bound to the GridView as:
    private void AddNewRecordRowToGrid() 
       { 
           // check view state is not null 
           if (ViewState["AuthorBooks"] != null
           { 
               //get datatable from view state  
               DataTable dtCurrentTable = (DataTable)ViewState["AuthorBooks"]; 
               DataRow drCurrentRow = null
     
               if (dtCurrentTable.Rows.Count > 0) 
               { 
     
                   for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
                   { 
      
                       //add each row into data table 
                       drCurrentRow = dtCurrentTable.NewRow(); 
                       drCurrentRow["AuthorName"] = TextBox1.Text; 
                       drCurrentRow["BrandName"] = TextBox2.Text; 
                       drCurrentRow["Warrenty"] =TextBox3.Text; 
                       drCurrentRow["Price"] =TextBox4.Text; 
     
     
                   } 
                   //Remove initial blank row 
                   if (dtCurrentTable.Rows[0][0].ToString() == ""
                   { 
                       dtCurrentTable.Rows[0].Delete(); 
                       dtCurrentTable.AcceptChanges(); 
     
                   } 
     
                   //add created Rows into dataTable 
                   dtCurrentTable.Rows.Add(drCurrentRow); 
                   //Save Data table into view state after creating each row 
                   ViewState["AuthorBooks"] = dtCurrentTable; 
                   //Bind Gridview with latest Row 
                   GridView1.DataSource = dtCurrentTable; 
                   GridView1.DataBind(); 
               } 
           } 
       }
Call the function above to add book details in the button click as:
    protected void AddProduct_Click(object sender, EventArgs e) 
      { 
          AddNewRecordRowToGrid(); 
      }
 Now the entire code of the default.aspx.cs page will be such as follows:
    using System; 
    using System.Data; 
    public partial class _Default : System.Web.UI.Page 
    { 
     
        protected void Page_Load(object sender, EventArgs e) 
        { 
            if (!IsPostBack) 
            { 
                AddDefaultFirstRecord(); 
            } 
        } 
        protected void AddProduct_Click(object sender, EventArgs e) 
        { 
            AddNewRecordRowToGrid(); 
        } 
     
        private void AddDefaultFirstRecord() 
        { 
            //creating dataTable  
            DataTable dt = new DataTable(); 
            DataRow dr; 
            dt.TableName = "AuthorBooks"
            dt.Columns.Add(new DataColumn("AuthorName", typeof(string))); 
            dt.Columns.Add(new DataColumn("BookName", typeof(string))); 
            dt.Columns.Add(new DataColumn("BookType", typeof(string))); 
            dt.Columns.Add(new DataColumn("Publisher", typeof(string))); 
            dr = dt.NewRow(); 
            dt.Rows.Add(dr); 
            //saving databale into viewstate  
            ViewState["AuthorBooks"] = dt; 
            //bind Gridview 
            GridView1.DataSource = dt; 
            GridView1.DataBind(); 
        } 
        private void AddNewRecordRowToGrid() 
        { 
            // check view state is not null 
            if (ViewState["AuthorBooks"] != null
            { 
                //get datatable from view state  
                DataTable dtCurrentTable = (DataTable)ViewState["AuthorBooks"]; 
                DataRow drCurrentRow = null
     
                if (dtCurrentTable.Rows.Count > 0) 
                { 
     
                    for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
                    { 
     
                        //add each row into data table 
                        drCurrentRow = dtCurrentTable.NewRow(); 
                        drCurrentRow["AuthorName"] = TextBox1.Text; 
                        drCurrentRow["BookName"] = TextBox2.Text; 
                        drCurrentRow["BookType"] =TextBox3.Text; 
                        drCurrentRow["Publisher"] =TextBox4.Text; 
     
     
                    } 
                    //Remove initial blank row 
                    if (dtCurrentTable.Rows[0][0].ToString() == ""
                    { 
                        dtCurrentTable.Rows[0].Delete(); 
                        dtCurrentTable.AcceptChanges(); 
     
                    } 
     
                    //add created Rows into dataTable 
                    dtCurrentTable.Rows.Add(drCurrentRow); 
                    //Save Data table into view state after creating each row 
                    ViewState["AuthorBooks"] = dtCurrentTable; 
                    //Bind Gridview with latest Row 
                    GridView1.DataSource = dtCurrentTable; 
                    GridView1.DataBind(); 
                } 
            } 
        } 
     
    }
Now run the application and view the result.


Other Asp.net Related Post:



No comments:

Post a Comment