Vinz' Blog

"Code, Beer and Music" ~ my way of being a programmer!
posts - 123, comments - 362, trackbacks - 0

My Links

News

Archives

Image Galleries

Adding Rows in GridView without using a Database

This article describes on how to add rows in GridView without using a database. Basically the GridView will be populated with data based on the values entered in the TextBox on Button Click and retain the GridView data on post back.
 
 
STEP 1:  
Add One TextBox, One Button and One GridView control the web form. The ASPX mark-up should look like these below
 
<asp:TextBox ID="TextBox1" runat="server"/>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:GridView ID="GridView1" runat="server" >
</asp:GridView>
 
 
STEP 2:
 
Create the method that will BIND the GridView based on the TextBox values and retain its values on post backs.
 
private void BindGrid(int rowcount)
    {
        DataTable dt = new DataTable();
        DataRow dr;
        dt.Columns.Add(new System.Data.DataColumn("TextBox1Column", typeof(String)));
 
        if (ViewState["CurrentData"] != null)
        {
            for (int i = 0; i < rowcount + 1; i++)
            {
                dt = (DataTable)ViewState["CurrentData"];
                if (dt.Rows.Count > 0)
                {
                    dr = dt.NewRow();
                    dr[0] = dt.Rows[0][0].ToString();
 
                }
            }
            dr = dt.NewRow();
            dr[0] = TextBox1.Text;
            dt.Rows.Add(dr);
 
        }
        else
        {
            dr = dt.NewRow();
            dr[0] = TextBox1.Text;
            dt.Rows.Add(dr);
 
        }
 
        // If ViewState has a data then use the value as the DataSource
        if (ViewState["CurrentData"] != null)
        {
            GridView1.DataSource = (DataTable)ViewState["CurrentData"];
            GridView1.DataBind();
        }
        else
        {
        // Bind GridView with the initial data assocaited in the DataTable
            GridView1.DataSource = dt;
            GridView1.DataBind();
 
        }
        // Store the DataTable in ViewState to retain the values
        ViewState["CurrentData"] = dt;
 
    }
 
 
Note that we store the DataTable in ViewState to retain the data values associated within the DataTable and use that as our GridView DataSource when it post back to the server.
 
STEP 3:
 
Binding the GridView on Button_Click event.
 
    protected void Button1_Click(object sender, EventArgs e)
    {
        // Check if the ViewState has a data assoiciated within it. If
        if (ViewState["CurrentData"] != null)
        {
            DataTable dt = (DataTable)ViewState["CurrentData"];
            int count = dt.Rows.Count;
            BindGrid(count);
        }
        else
        {
            BindGrid(1);
        }
        TextBox1.Text = “”;
        TextBox1.Focus();
    }
 
STEP 4:
Compile and run the application. The out put should look like below
 
 
So when you type anything on the TextBox and hit the Button, then the GridView will be populated with the data you entered in the TextBox and retain its values on postback.
 
Happy Coding! :)
 
 

Print | posted on Wednesday, May 07, 2008 6:22 PM |

Feedback

Gravatar

# re: Adding Rows in GridView without using a Database

if (!IsPostBack)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("ID");
DataColumn dc1 = new DataColumn("Product");
DataColumn dc2 = new DataColumn("Qnty");

dt.Columns.Add(dc);
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
ds.Tables.Add(dt);
Session["data"] = ds;
//GridView1.DataSource = ds;
//GridView1.DataBind();
}


protected void btn_Click(object sender, EventArgs e)
{





DataSet ds = (DataSet)Session["data"];
DataRow dr = ds.Tables[0].NewRow();
dr[0] = tb1.Text;
dr[1] = tb2.Text;
dr[2] = tb3.Text;
ds.Tables[0].Rows.Add(dr);
GridView1.DataSource = ds;
GridView1.DataBind();

}
11/9/2008 11:21 PM | sravan
Gravatar

# re: Adding Rows in GridView without using a Database

This coding is really helpful.
Thank u.
11/30/2008 8:22 PM | palaniyammal
Gravatar

# re: Adding Rows in GridView without using a Database

Thanks for your help
3/7/2009 10:34 AM | coder
Gravatar

# re: Adding Rows in GridView without using a Database

thanks vinz! really helpful.. i used your coding in my project.. but i cant figure out how to do paging an sorting from there
11/5/2009 1:49 PM | hondaMugen
Post A Comment
Title:
Name:
Email:
Website:
Comment:
Verification:
 
 

Powered by: