Monday, 7 January 2013

How to update GridView row in asp.net using c#

Step 1:
  Create a table items with the fallowing columns

create table items
(
iterm_no int,
name varChar(50),
price decimal
)

Step 2:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="srinivasgridview.aspx.cs" Inherits="gridview.srinivasgridview" %>

<!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>
<form id="form1" runat="server">
 <div>
<asp:GridView ID="Gridview1"  runat ="server" AutoGenerateColumns ="false"
            OnRowCancelingEdit ="GridView1_RowCancelingEdit"  DataKeyNames ="iterm_no"
             OnRowEditing ="GridView1_RowEditing" OnRowUpdating ="GridView1_RowUpdating"
             >
            <HeaderStyle BackColor ="Gray" ForeColor="White" HorizontalAlign ="Left" Height="20" />
            <Columns >
            <asp:CommandField ShowEditButton ="true" ShowCancelButton="true" ButtonType="Button" />
            <asp:BoundField DataField ="iterm_no" HeaderText="ITEM_NO" ReadOnly ="true" />
            <asp:TemplateField HeaderText="Product Name" >
            <ItemTemplate >
            <%# Eval ("name") %>
            </ItemTemplate>
            <EditItemTemplate >
            <asp:TextBox runat ="server" ID="textname" Text ='<%#Eval("name") %>'>
            </asp:TextBox>
            </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Price" >
            <ItemTemplate >
            <%#Eval ("price") %>
            </ItemTemplate>
            <EditItemTemplate >
            <asp:TextBox runat ="server" ID ="pricetext" Text='<%#Eval("price") %>'>
            </asp:TextBox>
            </EditItemTemplate>
            </asp:TemplateField>
            </Columns>
 
   </asp:GridView>
</div>
 </form>
</body>
</html>

Step 3: Set connection string in web.config File:

<connectionStrings  >
    <add name ="mycon" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\gridviewdatabase.mdf;Integrated Security=True;User Instance=True"/>
  </connectionStrings>

Step 4:
 Code behind code: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace gridview
{
public partial class srinivasgridview : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
{
 if (!Page.IsPostBack)
{
bind();
 }
}
public void bind()
 {
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings ["mycon"].ConnectionString );
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from items", con);
DataTable dt = new DataTable();
 da.Fill(dt);
Gridview1.DataSource = dt;
Gridview1.DataBind();
con.Close();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Gridview1.EditIndex = e.NewEditIndex;
bind();
}
 protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
 e.Cancel = true;
 Gridview1.EditIndex = -1;
bind();
 }
 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = Gridview1.Rows[e.RowIndex];
TextBox textname = (TextBox)row.FindControl("textname");
TextBox pricetext = (TextBox )row.FindControl("pricetext");
int item_no = Int32.Parse(Gridview1.DataKeys[e.RowIndex].Value.ToString());
string name = textname.Text.ToString();
 decimal Price = decimal.Parse(pricetext.Text);
 updateitems(item_no,name, Price );
}
public void updateitems(int item_no, string name, decimal Price)
{
 try
{
 string query = "UPDATE items SET name = @name, price = @price WHERE iterm_no = @iterm_no";
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["mycon"].ConnectionString);
 con.Open();
 SqlCommand com = new SqlCommand(query, con);
 com.Parameters.Add("@iterm_no", SqlDbType.Int ).Value = item_no ;
 com.Parameters.Add("@name", SqlDbType.VarChar ).Value = name;
com.Parameters.Add("@price", SqlDbType.Decimal ).Value = Price;
 com.ExecuteNonQuery();
 Gridview1.EditIndex = -1;
 bind ();
 }
 catch (Exception ex)
{
Response.Write("<script> alert('Error accrued')</script>");
 }
 }
}
}

No comments:

Post a Comment