Here I will explain how to implement ajax gridview crud operations insert, select, edit, update and delete with single stored procedure in asp.net using c#, vb.net with example or insert, update, delete operations (crud) in asp.net gridview without postback using updatepanel with single stored procedure in c#, vb.net with example.
Description:
In previous articles I explained gridview examples in asp.net, display images from database using handler in asp.net, Bind Dropdownlist selected value in asp.net gridview, gridview rowdatabound event example in asp.net, Delete multiple rows in gridview using checkbox in asp.net and many articles relating to gridview, asp.net, c#,vb.net and jQuery. Now I will explain how to implement ajax gridview crud operations (insert, select, edit, update) in asp.net with single stored procedure using c#, vb.net with example.
In previous articles I explained gridview examples in asp.net, display images from database using handler in asp.net, Bind Dropdownlist selected value in asp.net gridview, gridview rowdatabound event example in asp.net, Delete multiple rows in gridview using checkbox in asp.net and many articles relating to gridview, asp.net, c#,vb.net and jQuery. Now I will explain how to implement ajax gridview crud operations (insert, select, edit, update) in asp.net with single stored procedure using c#, vb.net with example.
Before implement this example first design one table productinfo in your database as shown below
Column Name | Data Type | Allow Nulls |
productid | Int(IDENTITY=TRUE) | Yes |
productname | varchar(50) | Yes |
price | varchar(50) | Yes |
Now create one new stored procedure “Crudoperations” in your sql server database to perform insert, select, update and delete operations with single procedure for that follow below script
CREATE PROCEDURE CrudOperations @productid int = 0, @productname varchar(50)=null, @price int=0, @status varchar(50) AS BEGIN SET NOCOUNT ON; --- Insert New Records IF @status='INSERT' BEGIN INSERT INTO productinfo1(productname,price) VALUES(@productname,@price) END --- Select Records in Table IF @status='SELECT' BEGIN SELECT productid,productname,price FROM productinfo1 END --- Update Records in Table IF @status='UPDATE' BEGIN UPDATE productinfo1 SET productname=@productname,price=@price WHERE productid=@productid END --- Delete Records from Table IF @status='DELETE' BEGIN DELETE FROM productinfo1 where productid=@productid END SET NOCOUNT OFF END |
In case if you have any doubts to create procedure check below article
Once we finish stored procedure creation in database now open your aspx page and write the code like as shown below
<html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>Ajax GridView CRUD: Select Insert Edit Update Delete using Single Stored Procedure in ASP.Net</title> <style type="text/css"> .GridviewDiv {font-size: 100%; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helevetica, sans-serif; color: #303933;} .headerstyle { color:#FFFFFF;border-right-color:#abb079;border-bottom-color:#abb079;background-color: #df5015;padding:0.5em 0.5em 0.5em 0.5em;text-align:center; } </style> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="scriptmanager1" runat="server"></asp:ScriptManager> <div class="GridviewDiv"> <asp:UpdatePanel ID="panel1" runat="server"> <ContentTemplate> <asp:GridView runat="server" ID="gvDetails" ShowFooter="true" AllowPaging="true" PageSize="10" AutoGenerateColumns="false" DataKeyNames="productid,productname" OnPageIndexChanging="gvDetails_PageIndexChanging" OnRowCancelingEdit="gvDetails_RowCancelingEdit" OnRowEditing="gvDetails_RowEditing" OnRowUpdating="gvDetails_RowUpdating" OnRowDeleting="gvDetails_RowDeleting" OnRowCommand ="gvDetails_RowCommand" > <HeaderStyle CssClass="headerstyle" /> <Columns> <asp:BoundField DataField="productid" HeaderText="Product Id" ReadOnly="true" /> <asp:TemplateField HeaderText="Product Name"> <ItemTemplate> <asp:Label ID="lblProductname" runat="server" Text='<%# Eval("productname")%>'/> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtProductname" runat="server" Text='<%# Eval("productname")%>'/> </EditItemTemplate> <FooterTemplate> <asp:TextBox ID="txtpname" runat="server" /> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText = "Price"> <ItemTemplate> <asp:Label ID="lblPrice" runat="server" Text='<%# Eval("price")%>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtProductprice" runat="server" Text='<%# Eval("price")%>'/> </EditItemTemplate> <FooterTemplate> <asp:TextBox ID="txtprice" runat="server" /> <asp:Button ID="btnAdd" CommandName="AddNew" runat="server" Text="Add" /> </FooterTemplate> </asp:TemplateField> <asp:CommandField ShowEditButton="True" ShowDeleteButton="true" /> </Columns> </asp:GridView> <asp:Label ID="lblresult" runat="server"></asp:Label> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="gvDetails" /> </Triggers> </asp:UpdatePanel> </div> </form> </body> </html> |
After completion of aspx page add following namespaces in codebehind
C# Code
using System; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; using System.Drawing; |
After completion of adding namespaces you need to write the code like as shown below
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindGridview(); } } protected void BindGridview() { DataSet ds = new DataSet(); using (SqlConnection con = new SqlConnection("Data Source=Suresh;Integrated Security=true;Initial Catalog=MySampleDB")) { con.Open(); SqlCommand cmd = new SqlCommand("crudoperations", con); cmd.CommandType= CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@status","SELECT"); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); con.Close(); if (ds.Tables[0].Rows.Count > 0) { gvDetails.DataSource = ds; gvDetails.DataBind(); } else { ds.Tables[0].Rows.Add(ds.Tables[0].NewRow()); gvDetails.DataSource = ds; gvDetails.DataBind(); int columncount = gvDetails.Rows[0].Cells.Count; gvDetails.Rows[0].Cells.Clear(); gvDetails.Rows[0].Cells.Add(new TableCell()); gvDetails.Rows[0].Cells[0].ColumnSpan = columncount; gvDetails.Rows[0].Cells[0].Text = "No Records Found"; } } } protected void gvDetails_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName.Equals("AddNew")) { TextBox txtname = (TextBox)gvDetails.FooterRow.FindControl("txtpname"); TextBox txtprice = (TextBox)gvDetails.FooterRow.FindControl("txtprice"); crudoperations("INSERT", txtname.Text, txtprice.Text, 0); } } protected void gvDetails_RowEditing(object sender, GridViewEditEventArgs e) { gvDetails.EditIndex = e.NewEditIndex; BindGridview(); } protected void gvDetails_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { gvDetails.EditIndex = -1; BindGridview(); } protected void gvDetails_PageIndexChanging(object sender, GridViewPageEventArgs e) { gvDetails.PageIndex = e.NewPageIndex; BindGridview(); } protected void gvDetails_RowUpdating(object sender, GridViewUpdateEventArgs e) { int productid = Convert.ToInt32(gvDetails.DataKeys[e.RowIndex].Values["productid"].ToString()); TextBox txtname = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtProductname"); TextBox txtprice = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtProductprice"); crudoperations("UPDATE",txtname.Text,txtprice.Text,productid); } protected void gvDetails_RowDeleting(object sender, GridViewDeleteEventArgs e) { int productid = Convert.ToInt32(gvDetails.DataKeys[e.RowIndex].Values["productid"].ToString()); string productname = gvDetails.DataKeys[e.RowIndex].Values["productname"].ToString(); crudoperations("DELETE",productname,"",productid); } protected void crudoperations(string status, string productname, string price, int productid) { using (SqlConnection con = new SqlConnection("Data Source=Suresh;Integrated Security=true;Initial Catalog=MySampleDB")) { con.Open(); SqlCommand cmd = new SqlCommand("crudoperations", con); cmd.CommandType= CommandType.StoredProcedure; if(status=="INSERT") { cmd.Parameters.AddWithValue("@status",status); cmd.Parameters.AddWithValue("@productname",productname); cmd.Parameters.AddWithValue("@price",price); } else if(status=="UPDATE") { cmd.Parameters.AddWithValue("@status",status); cmd.Parameters.AddWithValue("@productname",productname); cmd.Parameters.AddWithValue("@price",price); cmd.Parameters.AddWithValue("@productid",productid); } else if(status=="DELETE") { cmd.Parameters.AddWithValue("@status",status); cmd.Parameters.AddWithValue("@productid",productid); } cmd.ExecuteNonQuery(); lblresult.ForeColor = Color.Green; lblresult.Text = productname+" details "+status.ToLower()+"d successfully"; gvDetails.EditIndex = -1; BindGridview(); } } |
VB.NET Code
Imports System.Web.UI.WebControls Imports System.Data.SqlClient Imports System.Data Imports System.Drawing Partial Class VBCode Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load If Not IsPostBack Then BindGridview() End If End Sub Protected Sub BindGridview() Dim ds As New DataSet() Using con As New SqlConnection("Data Source=Suresh;Integrated Security=true;Initial Catalog=MySampleDB") con.Open() Dim cmd As New SqlCommand("crudoperations", con) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("@status", "SELECT") Dim da As New SqlDataAdapter(cmd) da.Fill(ds) con.Close() If ds.Tables(0).Rows.Count > 0 Then gvDetails.DataSource = ds gvDetails.DataBind() Else ds.Tables(0).Rows.Add(ds.Tables(0).NewRow()) gvDetails.DataSource = ds gvDetails.DataBind() Dim columncount As Integer = gvDetails.Rows(0).Cells.Count gvDetails.Rows(0).Cells.Clear() gvDetails.Rows(0).Cells.Add(New TableCell()) gvDetails.Rows(0).Cells(0).ColumnSpan = columncount gvDetails.Rows(0).Cells(0).Text = "No Records Found" End If End Using End Sub Protected Sub gvDetails_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) If e.CommandName.Equals("AddNew") Then Dim txtname As TextBox = DirectCast(gvDetails.FooterRow.FindControl("txtpname"), TextBox) Dim txtprice As TextBox = DirectCast(gvDetails.FooterRow.FindControl("txtprice"), TextBox) crudoperations("INSERT", txtname.Text, txtprice.Text, 0) End If End Sub Protected Sub gvDetails_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs) gvDetails.EditIndex = e.NewEditIndex BindGridview() End Sub Protected Sub gvDetails_RowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs) gvDetails.EditIndex = -1 BindGridview() End Sub Protected Sub gvDetails_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) gvDetails.PageIndex = e.NewPageIndex BindGridview() End Sub Protected Sub gvDetails_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Dim productid As Integer = Convert.ToInt32(gvDetails.DataKeys(e.RowIndex).Values("productid").ToString()) Dim txtname As TextBox = DirectCast(gvDetails.Rows(e.RowIndex).FindControl("txtProductname"), TextBox) Dim txtprice As TextBox = DirectCast(gvDetails.Rows(e.RowIndex).FindControl("txtProductprice"), TextBox) crudoperations("UPDATE", txtname.Text, txtprice.Text, productid) End Sub Protected Sub gvDetails_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs) Dim productid As Integer = Convert.ToInt32(gvDetails.DataKeys(e.RowIndex).Values("productid").ToString()) Dim productname As String = gvDetails.DataKeys(e.RowIndex).Values("productname").ToString() crudoperations("DELETE", productname, "", productid) End Sub Protected Sub crudoperations(ByVal status As String, ByVal productname As String, ByVal price As String, ByVal productid As Integer) Using con As New SqlConnection("Data Source=Suresh;Integrated Security=true;Initial Catalog=MySampleDB") con.Open() Dim cmd As New SqlCommand("crudoperations", con) cmd.CommandType = CommandType.StoredProcedure If status = "INSERT" Then cmd.Parameters.AddWithValue("@status", status) cmd.Parameters.AddWithValue("@productname", productname) cmd.Parameters.AddWithValue("@price", price) ElseIf status = "UPDATE" Then cmd.Parameters.AddWithValue("@status", status) cmd.Parameters.AddWithValue("@productname", productname) cmd.Parameters.AddWithValue("@price", price) cmd.Parameters.AddWithValue("@productid", productid) ElseIf status = "DELETE" Then cmd.Parameters.AddWithValue("@status", status) cmd.Parameters.AddWithValue("@productid", productid) End If cmd.ExecuteNonQuery() lblresult.ForeColor = Color.Green lblresult.Text = (productname & Convert.ToString(" details ")) + status.ToLower() + "d successfully" gvDetails.EditIndex = -1 BindGridview() End Using End Sub End Class |
Demo
No comments:
Post a Comment