Sie sind auf Seite 1von 60

dd delete update inside gridview using store procedure in ASP.

NET

Code for .aspx page:


<table class="style1"> <tr> <td class="style2"> Album Name</td> <td> <asp:TextBox ID="txt_album_name" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txt_album_name" ErrorMessage="Please enter the album name"></asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style2"> Caption</td> <td> <asp:TextBox ID="txt_caption" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txt_caption" ErrorMessage="Please enter the caption"></asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style2"> Image</td> <td> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="FileUpload1" ErrorMessage="Please browse the image"></asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style3"> </td> <td class="style4"> <asp:Button ID="btn_insert" runat="server" onclick="btn_insert_Click" Text="Insert" /> </td> </tr> <tr> <td class="style2" colspan="2"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"

onrowcancelingedit="GridView1_RowCancelingEdit" onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" onselectedindexchanging="GridView1_SelectedIndexChanging"> <Columns> <%--here i am using templatefields to for binding the gridview--%> <asp:TemplateField HeaderText="Album_name"> <EditItemTemplate> <%--here i am using the textbox in the edititmtemplatefield to upadate the data--%> <asp:TextBox ID="txt_album_name" runat="server" Text='<%# Eval("album_name") %>'></asp:TextBox> <asp:Label ID="Label4" runat="server" Text='<%# Eval("id") %>' Visible="False"></asp:Label> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("album_name") %>'></asp:Label> <asp:Label ID="Label2" runat="server" Text='<%# Eval("id") %>' Visible="False"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Caption"> <EditItemTemplate> <asp:TextBox ID="txt_caption" runat="server" Text='<%# Eval("caption") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label3" runat="server" Text='<%# Eval("caption") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Image"> <ItemTemplate> <%--for displaying the image inside the gidview here i'm using the <img>tag and specify the path of the folder where image is stored--%> <img alt ="" src ='images/<%#Eval("image") %>' height="50px" width="50px"/> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Delete"> <%--here i am using the linkbutton to delete the record and specify the command name of this linkbutton is delete--%> <ItemTemplate>

<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" onclientclick="return confirm('are you sure you want to delet this column')">Delete</asp:LinkButton> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Update"> <EditItemTemplate> <%-- here i am using the s linkbuttons to update the record and a cancel button and set the commandname of update button is update and the cancel button is cancel --%> <asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandName="Update">Update</asp:LinkButton> <asp:LinkButton ID="LinkButton4" runat="server" CausesValidation="False" CommandName="Cancel">Cancel</asp:LinkButton> </EditItemTemplate> <ItemTemplate> <%--here i am using the linkbutton for edit and specify the command name of this linkbutton is Edit--%> <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Edit">Edit</asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </td> </tr> </table>

Code for aspx.cs page:


using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq; // use below two namespaces for this program using System.Data.SqlClient; using System.IO; public partial class Gallery : System.Web.UI.Page { // here i declare some variables that will be used below inside the code. String fn; String path; SqlConnection cnn = new SqlConnection(); SqlCommand cmd = new SqlCommand(); SqlDataAdapter adp; DataTable dt; Int32 id;// id as a integer variable it will be used to catch the id at the time of //the deletion and updation inside the gridview. // below the two string variables will be used to update the record , inside the gridvbiew String album_name; String caption; // the image this string type variable will be used to delete the image from the folder where //the image will be stored after the record insertion. String image; protected void Page_Load(object sender, EventArgs e) { //here i declare the connection of the connectionstring to attach the database with the application cnn.ConnectionString = ConfigurationManager.ConnectionStrings["cnn"].ConnectionString; cnn.Open(); // if the connection will be closed the below code open the connection when the page will be loaded. if (cnn.State == ConnectionState.Closed) { cnn.Open(); } cnn.Close(); if (IsPostBack == false) { // here i am calling the function that will bind the gridview grd_bind(); } } protected void btn_insert_Click(object sender, EventArgs e)

{ // inside the first if condition i am declaring the code for the uploading the image. if (FileUpload1.PostedFile.ContentLength > 0) { fn = Path.GetFileName(FileUpload1.FileName); path = Server.MapPath("images") + "/" + fn; FileUpload1.SaveAs(path); } if (cnn.State == ConnectionState.Closed) { cnn.Open(); } // here i am using the store procedure named tb_gallery_insert to insert the record inside the database. SqlCommand cmd = new SqlCommand("tb_gallery_insert", cnn); cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = cnn; // here i am passing the parameters to insert the record cmd.Parameters.AddWithValue("@album_name", txt_album_name.Text); cmd.Parameters.AddWithValue("@caption", txt_caption.Text); cmd.Parameters.AddWithValue("@image", fn); cmd.ExecuteNonQuery(); cmd.Dispose(); grd_bind(); cnn.Close(); //here i am calling the function that will be used after the insertion of the record //insert the record inside the database. clr(); } // this function will used after the insertion of the record insert the record inside the database. private void clr() { txt_album_name.Text = ""; txt_caption.Text = ""; } //this function will used to bind the gridview private void grd_bind() { if (cnn.State == ConnectionState.Closed) { cnn.Open(); } // here i am using the sql query to select the gecord from the database and adp = new SqlDataAdapter("SELECT * FROM tb_gallery ", cnn); // here i declare the datatable to fill the record dt = new DataTable(); // here i am filling the dqldataadapter withe the datatable dt adp.Fill(dt);

// here i am disposing the apd after filling the record adp.Dispose(); // here i am binding the ghridview with the datatable dt GridView1.DataSource = dt; GridView1.DataBind(); } // this is a gridview's rowdeleting event that will be used to delete of the row record from the database protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { try { if (cnn.State == ConnectionState.Closed) { cnn.Open(); } //inside the id variable i am finding the label from the gridview and with the help of this //label i will fetch the id of the record that i want to delete id = Convert.ToInt32(((Label) (GridView1.Rows[e.RowIndex].FindControl("label2"))).Text); // here i am using the tb_gallery_delete store procedure ti delete the record from the database SqlCommand cmd = new SqlCommand("tb_gallery_delete", cnn); cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = cnn; cmd.Parameters.Add("@id", SqlDbType.Int).Value = id; // this code will be used to delete the image from the folder too // here i am using the sql query to select the record that will be selected by the user for deletion SqlDataAdapter adp = new SqlDataAdapter("select * from tb_gallery where id=@id", cnn); // here i am passing the parameter that will be used by the above sql query named as id adp.SelectCommand.Parameters.Add("@id", SqlDbType.Int).Value = id; DataSet ds = new DataSet(); // here i am filling the sqldataadapter with the dataset dt adp.Fill(ds); try { // here i am using the try catch exception becoz if the image will be not available // in side the folder. it does not creates the error. // inside the image variable i am fetching the image path from the database image = Convert.ToString(ds.Tables[0].Rows[0]["image"]); // this line will used to delete the image from the folder

// here i am also giving the filder name where you image was stored. File.Delete(Server.MapPath("images") + "\\" + image); } catch { } cmd.ExecuteNonQuery(); cmd.Dispose(); grd_bind(); } catch { } } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; grd_bind(); } protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; grd_bind(); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { if (cnn.State == ConnectionState.Closed) { cnn.Open(); } //inside the id variable i am finding the label from the gridview and with the help of this //label i will fetch the id of the record that i want to update id = Convert.ToInt32(((Label) (GridView1.Rows[e.RowIndex].FindControl("label4"))).Text); //inside the album_name variable i am finding the textbox from the gridview and with the help of this //textbox i will find the album name thatthe user want to update album_name = (((TextBox) (GridView1.Rows[e.RowIndex].FindControl("txt_album_name"))).Text); //inside the caption variable i am finding the textbox from the gridview and with the help of this //textbox i will find caption that the user want to update caption = (((TextBox)(GridView1.Rows[e.RowIndex].FindControl("txt_caption"))).Text);

// here i am using the tb_gallery_update to update the record from the database inside the gridview SqlCommand cmd = new SqlCommand("tb_gallery_update", cnn); cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = cnn; // here i am passing the three variables that will be used to update the record by the store orocedure cmd.Parameters.Add("@id", SqlDbType.Int).Value = id; cmd.Parameters.Add("@album_name", SqlDbType.VarChar, 50).Value = album_name; cmd.Parameters.Add("@caption", SqlDbType.VarChar, 50).Value = caption; cmd.ExecuteNonQuery(); cmd.Dispose(); GridView1.EditIndex = -1; // here i am also calling the function taht will bind the gridview after fetching the record //from the database grd_bind(); } protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { GridView1.PageIndex = e.NewSelectedIndex; grd_bind(); } } See output in this image:

Sql Script for database:


SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tb_Gallery]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[tb_Gallery]( [id] [int] IDENTITY(1,1) NOT NULL, [Album_name] [varchar](50) NULL, [Caption] [varchar](50) NULL, [Image] [varchar](50) NULL ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tb_gallery_insert]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[tb_gallery_insert] @album_name varchar(50), @caption varchar(50), @image varchar(50) AS insert into tb_gallery values(@album_name,@caption,@image) RETURN ' END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tb_gallery_delete]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[tb_gallery_delete] @id int AS delete from tb_gallery where id=@id RETURN ' END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tb_gallery_update]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[tb_gallery_update] @id int, @album_name varchar(50), @caption varchar(50) AS update tb_gallery set album_name=@album_name, caption=@caption where id=@id RETURN ' END

GridView - Add Edit Update Delete and Paging the AJAX way
You might have seen many articles explaining ASP.Net GridView Add (Insert), Edit, Update and Delete functionality, but this is different and how Ill explain as we progress. My main objective in this article is to keep it simple and cover multiple aspects in one article.

Concept Basically I have tried to make the normal Add (Insert), Edit, Update and delete functions in ASP.Net GridView simple and also combining the powers of ASP.Net AJAX with that of JQuery to give an elegant and charming user experience.

Database and Connection String For this article as usual I have used my favorite NorthWind database which you can get by clicking on the link below.

Download Northwind Database


Below is the connection string from the web.config <connectionStrings> <add name="conString" connectionString="Data Source=.\SQLExpress; database=Northwind;Integrated Security=true"/> </connectionStrings>

The GridView Below is the markup of the ASP.Net GridView control that Ill be using to demonstrate the various features explained in this article.

<div id = "dvGrid" style ="padding:10px;width:550px"> <asp:UpdatePanel ID="UpdatePanel1" runat="server">

<ContentTemplate> <asp:GridView ID="GridView1" runat="server" Width = "550px" AutoGenerateColumns = "false" Font-Names = "Arial" Font-Size = "11pt" AlternatingRowStyle-BackColor = "#C2D69B" HeaderStyle-BackColor = "green" AllowPaging ="true" ShowFooter = "true" OnPageIndexChanging = "OnPaging" onrowediting="EditCustomer" onrowupdating="UpdateCustomer" onrowcancelingedit="CancelEdit" PageSize = "10" > <Columns> <asp:TemplateField ItemStyle-Width = "30px" HeaderText = "CustomerID"> <ItemTemplate> <asp:Label ID="lblCustomerID" runat="server" Text='<%# Eval("CustomerID")%>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox ID="txtCustomerID" Width = "40px" MaxLength = "5" runat="server"></asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField ItemStyle-Width = "100px" HeaderText = "Name"> <ItemTemplate> <asp:Label ID="lblContactName" runat="server" Text='<%# Eval("ContactName")%>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtContactName" runat="server" Text='<%# Eval("ContactName")%>'></asp:TextBox> </EditItemTemplate> <FooterTemplate> <asp:TextBox ID="txtContactName" runat="server"></asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField ItemStyle-Width = "150px" HeaderText = "Company"> <ItemTemplate> <asp:Label ID="lblCompany" runat="server" Text='<%# Eval("CompanyName")%>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtCompany" runat="server" Text='<%# Eval("CompanyName")%>'></asp:TextBox> </EditItemTemplate> <FooterTemplate> <asp:TextBox ID="txtCompany" runat="server"></asp:TextBox> </FooterTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:LinkButton ID="lnkRemove" runat="server" CommandArgument = '<%# Eval("CustomerID")%>' OnClientClick = "return confirm('Do you want to delete?')" Text = "Delete" OnClick = "DeleteCustomer"></asp:LinkButton> </ItemTemplate> <FooterTemplate> <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick = "AddNewCustomer" /> </FooterTemplate> </asp:TemplateField>

<asp:CommandField ShowEditButton="True" /> </Columns> <AlternatingRowStyle BackColor="#C2D69B" /> </asp:GridView> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID = "GridView1" /> </Triggers> </asp:UpdatePanel> </div>

The GridView has 3 data columns 1. Customer ID 2. Contact Name 3. Company Name I have added a LinkButton in 4th column which will act as custom column for delete functionality. The reason to use a custom button is to provide the JavaScript confirmation box to the user when he clicks Delete. For Edit and Update I have added a command field which will act as the 5th column. Theres also a Footer Row with 3 TextBoxes which will be used to add new records to the database and an Add button which will be used to add the records. I have enabled pagination and finally wrapped the complete Grid in update panel and the update panel in a div dvGrid and the reason to that Ill explain later in the article

Binding the GridView Below is the code to bind the GridView in the page load event of the page C# private String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindData(); } } private void BindData() { string strQuery = "select CustomerID,ContactName,CompanyName" + " from customers"; SqlCommand cmd = new SqlCommand(strQuery); GridView1.DataSource = GetData(cmd); GridView1.DataBind();

} VB.Net Private strConnString As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load If Not IsPostBack Then BindData() End If End Sub Private Sub BindData() Dim strQuery As String = "select CustomerID,ContactName,CompanyName" & _ " from customers" Dim cmd As New SqlCommand(strQuery) GridView1.DataSource = GetData(cmd) GridView1.DataBind() End Sub

Below is the screenshot of the GridView being populated using the above code

Adding new record As discussed above I have placed 3 textboxes and a button in the Footer Row of the ASP.Net GridView control in order to add new record to the database. On the onclick event if the button the records are inserted into the SQL Server Database and the GridView is updated

C# protected void AddNewCustomer(object sender, EventArgs e) { string CustomerID=((TextBox)GridView1.FooterRow.FindControl("txtCustomerID")).Text; string Name = ((TextBox)GridView1.FooterRow.FindControl("txtContactName")).Text;

string Company = ((TextBox)GridView1.FooterRow.FindControl("txtCompany")).Text; SqlConnection con = new SqlConnection(strConnString); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "insert into customers(CustomerID, ContactName, CompanyName) " + "values(@CustomerID, @ContactName, @CompanyName);" + "select CustomerID,ContactName,CompanyName from customers"; cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar).Value = CustomerID; cmd.Parameters.Add("@ContactName", SqlDbType.VarChar).Value = Name; cmd.Parameters.Add("@CompanyName", SqlDbType.VarChar).Value = Company; GridView1.DataSource = GetData(cmd); GridView1.DataBind(); }

VB.Net Protected Sub AddNewCustomer(ByVal sender As Object, ByVal e As EventArgs) Dim CustomerID As String = DirectCast(GridView1.FooterRow _ .FindControl("txtCustomerID"), TextBox).Text Dim Name As String = DirectCast(GridView1 _ .FooterRow.FindControl("txtContactName"), TextBox).Text Dim Company As String = DirectCast(GridView1 _ .FooterRow.FindControl("txtCompany"), TextBox).Text Dim con As New SqlConnection(strConnString) Dim cmd As New SqlCommand() cmd.CommandType = CommandType.Text cmd.CommandText = "insert into customers(CustomerID, ContactName, " & _ "CompanyName) values(@CustomerID, @ContactName, @CompanyName);" & _ "select CustomerID,ContactName,CompanyName from customers" cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar).Value = CustomerID cmd.Parameters.Add("@ContactName", SqlDbType.VarChar).Value = Name cmd.Parameters.Add("@CompanyName", SqlDbType.VarChar).Value = Company GridView1.DataSource = GetData(cmd) GridView1.DataBind() End Sub You will notice I am firing two queries one to insert the data and second to select the updated data and then rebind the GridView. The figure below displays how new records are added.

Edit and Update existing records As described above I have used command field in order to provide the Edit functionality. Below is the code snippet which is used to edit and update the records

C# protected void EditCustomer(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; BindData(); } protected void CancelEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; BindData(); } protected void UpdateCustomer(object sender, GridViewUpdateEventArgs e) { string CustomerID = ((Label)GridView1.Rows[e.RowIndex] .FindControl("lblCustomerID")).Text; string Name = ((TextBox)GridView1.Rows[e.RowIndex] .FindControl("txtContactName")).Text; string Company = ((TextBox)GridView1.Rows[e.RowIndex] .FindControl("txtCompany")).Text; SqlConnection con = new SqlConnection(strConnString); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "update customers set ContactName=@ContactName," +

"CompanyName=@CompanyName where CustomerID=@CustomerID;" + "select CustomerID,ContactName,CompanyName from customers"; cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar).Value = CustomerID; cmd.Parameters.Add("@ContactName", SqlDbType.VarChar).Value = Name; cmd.Parameters.Add("@CompanyName", SqlDbType.VarChar).Value = Company; GridView1.EditIndex = -1; GridView1.DataSource = GetData(cmd); GridView1.DataBind(); }

VB.Net Protected Sub EditCustomer(ByVal sender As Object, ByVal e As GridViewEditEventArgs) GridView1.EditIndex = e.NewEditIndex BindData() End Sub Protected Sub CancelEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs) GridView1.EditIndex = -1 BindData() End Sub Protected Sub UpdateCustomer(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Dim CustomerID As String = DirectCast(GridView1.Rows(e.RowIndex) _ .FindControl("lblCustomerID"), Label).Text Dim Name As String = DirectCast(GridView1.Rows(e.RowIndex) _ .FindControl("txtContactName"), TextBox).Text Dim Company As String = DirectCast(GridView1.Rows(e.RowIndex) _ .FindControl("txtCompany"), TextBox).Text Dim con As New SqlConnection(strConnString) Dim cmd As New SqlCommand() cmd.CommandType = CommandType.Text cmd.CommandText = "update customers set ContactName=@ContactName," _ & "CompanyName=@CompanyName where CustomerID=@CustomerID;" _ & "select CustomerID,ContactName,CompanyName from customers" cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar).Value = CustomerID cmd.Parameters.Add("@ContactName", SqlDbType.VarChar).Value = Name cmd.Parameters.Add("@CompanyName", SqlDbType.VarChar).Value = Company GridView1.EditIndex = -1 GridView1.DataSource = GetData(cmd) GridView1.DataBind() End Sub

You can view above I am simply getting the data from the textboxes in the Footer Row and then firing an update query along with the select query so that the ASP.Net GridView control is also updated. The figure below displays the Edit and Update functionality.

Deleting existing record with Confirmation As said above I am using custom delete button instead of ASP.Net GridView delete command field and the main reason for that is to add a confirmation.

C# protected void DeleteCustomer(object sender, EventArgs e) { LinkButton lnkRemove = (LinkButton)sender; SqlConnection con = new SqlConnection(strConnString); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "delete from customers where " + "CustomerID=@CustomerID;" + "select CustomerID,ContactName,CompanyName from customers"; cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar).Value = lnkRemove.CommandArgument; GridView1.DataSource = GetData(cmd); GridView1.DataBind(); }

VB.Net Protected Sub DeleteCustomer(ByVal sender As Object, ByVal e As EventArgs) Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton)

Dim con As New SqlConnection(strConnString) Dim cmd As New SqlCommand() cmd.CommandType = CommandType.Text cmd.CommandText = "delete from customers where " & _ "CustomerID=@CustomerID;" & _ "select CustomerID,ContactName,CompanyName from customers" cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar).Value _ = lnkRemove.CommandArgument GridView1.DataSource = GetData(cmd) GridView1.DataBind() End Sub

Based on the sender argument I am getting the reference of the LinkButton that is clicked and with the CommandArgument of the LinkButton I am getting the ID of the record to be deleted. After the delete query I am firing a select query and the rebinding the GridView.

Pagination For pagination I have added the OnPageIndexChanging event on which I am assigning the new page index to the ASP.Net GridView control and then rebinding the data.

C# protected void OnPaging(object sender, GridViewPageEventArgs e) { BindData(); GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); }

VB.Net Protected Sub OnPaging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) BindData() GridView1.PageIndex = e.NewPageIndex GridView1.DataBind() End Sub

ASP.Net AJAX and JQuery As you have seen in the start I had added an Update Panel and a DIV along with ASP.Net GridView Control. Basically the Update Panel will give the asynchronous calls thus not reloading the complete page and the JQuery will block the UI until the update panel is refreshed completely. But instead of blocking the complete page I am blocking only the contents of the DIV dvGrid. To achieve this I am using the JQuery BlockUI Plugin <script type = "text/javascript" src = "scripts/jquery-1.3.2.min.js"></script> <script type = "text/javascript" src = "scripts/jquery.blockUI.js"></script> <script type = "text/javascript"> function BlockUI(elementID) { var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequest(function() { $("#" + elementID).block({ message: '<table align = "center"><tr><td>' + '<img src="images/loadingAnim.gif"/></td></tr></table>', css: {}, overlayCSS: {backgroundColor:'#000000',opacity: 0.6, border:'3px solid #63B2EB' } }); }); prm.add_endRequest(function() {

$("#" + elementID).unblock(); }); } $(document).ready(function() { BlockUI("dvGrid"); $.blockUI.defaults.css = {};

}); </script>

Thats all the scripting required and the following is achieved with the above scripts. It will block the Grid until the update panel finishes its work. Refer the figure below

Thats it. With this the article comes to an end, hope you liked it Ill get back soon with a new one. Download the sample in VB.Net and C# using the link below.

How to use GridView with Insert, Edit, Update, Delete the Ado.net way C#
Now, I in this article I will use Itemtemplate and Edittemplate where we will do Edit, Update and Delete the records. Before to do it first of all create a database.

Or Run the following script in your Sql Server 2005. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N[dbo].[tbuser]) AND type in (NU)) BEGIN CREATE TABLE [dbo].[tbuser]( [id] [int] IDENTITY(1,1) NOT NULL, [uid] [varchar](50) NOT NULL, [Name] [varchar](50) NULL, [address] [varchar](50) NULL,

[salary] [int] NULL, CONSTRAINT [PK_tbuser] PRIMARY KEY CLUSTERED ( [uid] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS ON) ON [PRIMARY] ) ON [PRIMARY] END Well place the GridView control on a form and set the following property. 1.AutoGenerateColumns=False And set the Gridview Events name is onpageindexchanging=GridView1_PageIndexChanging onrowcancelingedit=GridView1_RowCancelingEdit onrowdeleting=GridView1_RowDeleting onrowediting=GridView1_RowEditing onrowupdating=GridView1_RowUpdating *Snapshot how to do set Events of GridView select the GridView and press f4 =

Or copy paste the following Source Code

<%@ Page Language=C# AutoEventWireup=true CodeFile=user.aspx.cs Inherits=user %> <!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>Untitled Page</title> <style type=text/css> .style1 { width: 100%; } .style2 { } </style> </head> <body> <form id=form1 runat=server> <table class=style1> <tr> <td class=style2> Uid</td> <td> <asp:TextBox ID=Txt_uid runat=server></asp:TextBox>

</td> </tr> <tr> <td class=style2> Name</td> <td> <asp:TextBox ID=Txt_Name runat=server></asp:TextBox> </td> </tr> <tr> <td class=style2> Address</td> <td> <asp:TextBox ID=Txt_Address runat=server Height=22px > </asp:TextBox> </td> </tr> <tr> <td class=style2> Salary</td> <td> <asp:TextBox ID=Txt_Salary runat=server></asp:TextBox> </td>

</tr> <tr> <td class=style2> &nbsp;</td> <td> <asp:Button ID=Button1 runat=server Height=26px onclick=Button1_Click Text=Insert Width=89px /> </td> </tr> <tr> <td class=style2> &nbsp;</td> <td> &nbsp;</td> </tr> <tr> <td class=style2 colspan=2> <asp:GridView ID=GridView1 runat=server AutoGenerateColumns=False CellPadding=1 ForeColor=#333333 GridLines=None onpageindexchanging=GridView1_PageIndexChanging onrowcancelingedit=GridView1_RowCancelingEdit onrowdeleting=GridView1_RowDeleting onrowediting=GridView1_RowEditing

onrowupdating=GridView1_RowUpdating CellSpacing=1> <RowStyle BackColor=#EFF3FB /> <Columns> <asp:TemplateField HeaderText=S.No> <ItemTemplate> <%#Container.DataItemIndex +1 %> <asp:Label ID=Label5 runat=server></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=Uid> <ItemTemplate> <asp:Label ID=Label1 runat=server Text=<%# Eval(uid) %>></asp:Label> <asp:Label ID=lb_id runat=server Text=<%# Eval(id) %>></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:Label ID=lbl_edit runat=server Text=<%# Eval(id) %>></asp:Label> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=Name> <ItemTemplate> <asp:Label ID=Label2 runat=server Text=<%# Eval(Name) %>></asp:Label> </ItemTemplate>

<EditItemTemplate> <asp:TextBox ID=txt_ename runat=server Text=<%# Eval(name) %>></asp:TextBox> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=Salary> <ItemTemplate> <asp:Label ID=Label3 runat=server Text=<%# Eval(Salary) %>></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID=txt_esal runat=server Text=<%# Eval(Salary) %>></asp:TextBox> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=Address> <ItemTemplate> <asp:Label ID=Label4 runat=server Text=<%# Eval(Address) %>></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID=txt_eadd runat=server Height=81px Text=<%# Eval(address) %> TextMode=MultiLine Width=246px></asp:TextBox> </EditItemTemplate> </asp:TemplateField>

<asp:TemplateField HeaderText=Edit> <ItemTemplate> <asp:LinkButton ID=LinkButton1 runat=server CommandName=edit>Edit</asp:LinkButton> </ItemTemplate> <EditItemTemplate> <asp:LinkButton ID=LinkButton2 runat=server CommandName=update>Update</asp:LinkButton> &nbsp;<asp:LinkButton ID=LinkButton3 runat=server CommandName=cancel>Cancel</asp:LinkButton> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=Delete> <ItemTemplate> <asp:LinkButton ID=LinkButton4 runat=server CommandName=delete onclientclick=return confirm(Are you sure want to delete the current record ?)>Delete</asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> <FooterStyle BackColor=#507CD1 Font-Bold=True ForeColor=White /> <PagerStyle BackColor=#2461BF ForeColor=White HorizontalAlign=Center /> <SelectedRowStyle BackColor=#D1DDF1 Font-Bold=True ForeColor=#333333 />

<HeaderStyle BackColor=#507CD1 Font-Bold=True ForeColor=White /> <EditRowStyle BackColor=#FF9999 /> <AlternatingRowStyle BackColor=White /> </asp:GridView> </td> </tr> <tr> <td class=style2> &nbsp;</td> <td> &nbsp;</td> </tr> <tr> <td class=style2> &nbsp;</td> <td> &nbsp;</td> </tr> </table> <div> </div> </form> </body>

</html>

Snapshots

CODING using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; // add the namespace

public partial class user : System.Web.UI.Page

{ SqlConnection con = new SqlConnection(); // for connection SqlCommand cmd; DataTable dt; SqlDataAdapter adp; protected void Page_Load(object sender, EventArgs e) { con.ConnectionString = ConfigurationManager.ConnectionStrings["cnn"].ConnectionString; //accessing connection name from Web.config con.Open(); if (con.State == ConnectionState.Closed) { con.Open(); } con.Close();

if (IsPostBack == false) { grdview(); // calling the grdview function } } private void grdview() {

if (con.State == ConnectionState.Closed) { con.Open(); } adp = new SqlDataAdapter(select * from tbuser order by id desc, con); //fetching the records from table dt = new DataTable(); adp.Fill(dt); if (dt.Rows.Count == 0) { Response.Write(No record found); } else { GridView1.DataSource = dt; GridView1.DataBind(); } con.Close(); }

protected void Button1_Click(object sender, EventArgs e) {

if (con.State == ConnectionState.Closed) { con.Open(); } adp = new SqlDataAdapter(Select uid from tbuser where uid=@uid, con); // will check the uid if exists then display else condition adp.SelectCommand.Parameters.AddWithValue(@uid, Txt_uid.Text); dt = new DataTable(); adp.Fill(dt); adp.Dispose(); if (dt.Rows.Count == 0) { // will insert the unique record of uid cmd = new SqlCommand(insert into tbuser values(@uid,@Name,@Address,@Salary), con); cmd.Parameters.AddWithValue(@uid, Txt_uid.Text); cmd.Parameters.AddWithValue(@Name, Txt_Name.Text); cmd.Parameters.AddWithValue(@Address, Txt_Address.Text); cmd.Parameters.AddWithValue(@Salary, Txt_Salary.Text); cmd.ExecuteNonQuery(); cmd.Dispose(); con.Close(); grdview(); }

else { Response.Write(user name is already exits); }} protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; // for pageindexing grdview(); } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; // will cancel the updating grdview(); } protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { //will delete the Record Label id = ((Label) (GridView1.Rows[e.RowIndex].FindControl(lb_id))); // here we will find the label name lb_id which is bound with //field name id if (con.State == ConnectionState.Closed) { con.Open(); } cmd = new SqlCommand(delete from tbuser where id=@id, con);

cmd.Parameters.AddWithValue(@id, id.Text); cmd.ExecuteNonQuery(); cmd.Dispose(); con.Close(); grdview(); }

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; grdview(); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { // The label which is in Edittemplate name lbl_edit bind with id field from the table Label id = ((Label) (GridView1.Rows[e.RowIndex].FindControl(lbl_edit))) ; if (con.State == ConnectionState.Closed) { con.Open(); } //In edittemplate where we placed the textbox which were bind with the fields and here we will find the // controls and will access the fields and update the records cmd = new SqlCommand(update tbuser set name=@name,salary=@salary,address=@address where id=@id, con);

cmd.Parameters.AddWithValue(@name, ((TextBox) (GridView1.Rows[e.RowIndex].FindControl(txt_ename))).Text);//n ame cmd.Parameters.AddWithValue(@salary, Convert.ToInt32(((TextBox) (GridView1.Rows[e.RowIndex].FindControl(txt_esal))).Text));//s alary cmd.Parameters.AddWithValue(@address, ((TextBox) (GridView1.Rows[e.RowIndex].FindControl(txt_eadd))).Text);//ad dress cmd.Parameters.AddWithValue(@id, id.Text);//id cmd.ExecuteNonQuery(); cmd.Dispose(); GridView1.EditIndex = -1; con.Close(); grdview(); }} ASP.Net GridView- Insert Edit Update and Delete the ADO.NET way
This demo is a continuation of my previous example Binding GridView with Data. If you are not familiar of binding the GridView the ado.net way then I would suggest looking at my previous example first before you proceed reading this example. Basically, this demo describes the basic way on how to do INSERT, EDIT, UPDATE and DELETE data in ASPNET GridView Control using the ADO.NET way. STEP 1: Creating a Database Table In this demo, I presumed that you already have a basic background on how to create a simple database table. In this example, I used my own database called SampleDB which has Customers Table and basically contains the following field columns: CustomerID PK CompanyName ContactName ContactTitle Address Country STEP 2: Setting Up the Connection String <connectionStrings>

<add name="DBConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SampleDB.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/> </connectionStrings>

STEP 3: Setting up the GUI Just for the simplicity of this demo, I set up the GUI like this:

<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>GridView Data Manipulation</title> </head> <body> <form id="form1" runat="server"> <div> <table cellpadding="0" cellspacing="0"> <tr> <td style="width: 100px; height: 19px;"> Company ID</td> <td style="width: 100px; height: 19px;"> Company</td> <td style="width: 100px; height: 19px;"> Name</td> <td style="width: 100px; height: 19px;"> Title</td> <td style="width: 100px; height: 19px;"> Address</td> <td style="width: 100px; height: 19px;"> Country</td> </tr> <tr> <td style="width: 100px"> <asp:TextBox ID="TextBox1" runat="server"/></td> <td style="width: 100px"> <asp:TextBox ID="TextBox2" runat="server"/></td> <td style="width: 100px"> <asp:TextBox ID="TextBox3" runat="server"/></td> <td style="width: 100px"> <asp:TextBox ID="TextBox4" runat="server"/></td> <td style="width: 100px"> <asp:TextBox ID="TextBox5" runat="server"/></td> <td style="width: 100px"> <asp:TextBox ID="TextBox6" runat="server"/></td> <td style="width: 100px"> <asp:Button ID="Button1" runat="server" Text="Add New" OnClick="Button1_Click" /></td> </tr> </table>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" ShowFooter="true"> <Columns> <asp:BoundField DataField="CustomerID" HeaderText="ID" ReadOnly="true"/> <asp:BoundField DataField="CompanyName" HeaderText="Company"/> <asp:BoundField DataField="ContactName" HeaderText="Name"/> <asp:BoundField DataField="ContactTitle" HeaderText="Title" /> <asp:BoundField DataField="Address" HeaderText="Address"/> <asp:BoundField DataField="Country" HeaderText="Country"/> </Columns> </asp:GridView> </div> </form> </body> </html>

Note: I have set the CustomerID field to ReadOnly so that the field cannot be edited. STEP 4: Binding GridView with Data I will not elaborate on this step because I already describe the details in my previous example about Binding GridView with Data. Here are the code blocks for binding the GridView. public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindGridView(); } } private string GetConnectionString() { return System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].Co nnectionString; } #region Bind GridView private void BindGridView() { DataTable dt = new DataTable(); SqlConnection connection = new SqlConnection(GetConnectionString()); try { connection.Open(); string sqlStatement = "SELECT Top(10)* FROM Customers"; SqlCommand cmd = new SqlCommand(sqlStatement, connection); SqlDataAdapter sqlDa = new SqlDataAdapter(cmd); sqlDa.Fill(dt);

} catch (System.Data.SqlClient.SqlException ex) { string msg = "Fetch Error:"; msg += ex.Message; throw new Exception(msg); } finally { connection.Close(); } } #endregion }

if (dt.Rows.Count > 0) { GridView1.DataSource = dt; GridView1.DataBind(); }

Now, we already know how to bind our GridView with data from database. So lets proceed on adding a new data in GridView.

STEP 5: Adding New Data in GridView As you have noticed in STEP 2, we have added six TextBox and a Button in the web form in order for us to type the information there and Insert them to the database. Now lets create a method for executing the Update or Insert. Here are the code blocks for our Insert and Update method in the code behind: #region Insert New or Update Record private void UpdateOrAddNewRecord(string ID, string Company, string Name, string Title, string Address, string Country, bool isUpdate) { SqlConnection connection = new SqlConnection(GetConnectionString()); string sqlStatement = string.Empty; if (!isUpdate) { sqlStatement = "INSERT INTO Customers"+ "(CustomerID,CompanyName,ContactName,ContactTitle,Address,Country)" + "VALUES (@CustomerID,@CompanyName,@ContactName,@ContactTitle,@Address,@Country)"; } else { sqlStatement = "UPDATE Customers" + "SET CompanyName = @CompanyName, ContactName = @ContactName," + "ContactTitle = @ContactTitle,Address = @Address,Country = @Country" + "WHERE CustomerID = @CustomerID,";

} try {

} catch (System.Data.SqlClient.SqlException ex) { string msg = "Insert/Update Error:"; msg += ex.Message; throw new Exception(msg); } finally { connection.Close(); } } #endregion

connection.Open(); SqlCommand cmd = new SqlCommand(sqlStatement, connection); cmd.Parameters.AddWithValue("@CustomerID", ID); cmd.Parameters.AddWithValue("@CompanyName", Company); cmd.Parameters.AddWithValue("@ContactName", Name); cmd.Parameters.AddWithValue("@ContactTitle", Title); cmd.Parameters.AddWithValue("@Address", Address); cmd.Parameters.AddWithValue("@Country", Country); cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery();

The UpdateOrAddNewRecord is a method that takes seven parameters. Six of those parameters basically come from the TextBox values that were entered in the page. The last parameter is a boolean value which tells the method whether to execute an Insert (false) or Update (true). Default is true. Heres the code block for calling the method UpdateOrAddNewRecord on Button_Click event and pass the corresponding parameters needed:

protected void Button1_Click(object sender, EventArgs e) { UpdateOrAddNewRecord(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox6.Text, false); //Re Bind GridView to reflect changes made BindGridView(); }

As you can see from above, We have called the BindGridView() method again in order to reflect the changes made and display the new added data in the GridView. See output below with red mark. Click to enlarge the image

STEP 6: Edit and Update Records In GridView One of the good things about GridView is that it provides a built-in CommandField Buttons which allows us to perform certain actions like editing, updating,deleting and selecting of GridView data. To add those command fields mentioned in the GridView you can follow these few steps below: 1. Switch to Design View 2. Right Click on the GridView and Select --> Show Smart Tag --> Add New Columns 3. On the List Select CommandField 4. Check Delete and Edit/Update options then OK As you can see the Edit and Delete CommandField are automatically added in the last column of GridView. Now we can start to write our codes for editing and updating the information in the GridView. In-order to perform Edit and Update in GridView we need to use three events ( GridView_RowEditing, GridView_RowCancelingEdit , GridView_RowUpdating). For those who do not know on how to generate Events in GridView you can follow these steps below: 1. 2. 3. 4. Switch to Design View in Visual Studio Designer Click on the GridView Navigate to the GridView Property Pane and then SWITCH to Event Properties From there you would be able to find the list of events including those three events mentioned above 5. Double Click on that to generate the Event handler for you 6. Then write the codes there Heres the code for each events:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; // turn to edit mode BindGridView(); // Rebind GridView to show the data in edit mode } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; //swicth back to default mode BindGridView(); // Rebind GridView to show the data in default mode } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { //Accessing Edited values from the GridView string id = GridView1.Rows[e.RowIndex].Cells[0].Text; //ID string company = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text; //Company string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text; //Name string title = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text; //Title string address = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text; //Address string country = ((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text; //Country UpdateOrAddNewRecord(id,company,name,title,address,country,true); // call update method GridView1.EditIndex = -1; BindGridView(); // Rebind GridView to reflect changes made }

STEP 7: Perform Delete in GridView Since we are using the Built-in Delete CommandField Button in GridView, we can use the GridView_RowDeleting event to delete specific row in GridView. Heres the code block for the Delete method:

#region Delete Record private void DeleteRecord(string ID) { SqlConnection connection = new SqlConnection(GetConnectionString()); string sqlStatement = "DELETE FROM Customers WHERE CustomerID =

@CustomerID"; try { connection.Open(); SqlCommand cmd = new SqlCommand(sqlStatement, connection); cmd.Parameters.AddWithValue("@CustomerID", ID); cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException ex) { string msg = "Deletion Error:"; msg += ex.Message; throw new Exception(msg); } finally { connection.Close(); }

} #endregion

Heres the code block for calling the delete method at RowDeleting event protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { string id = GridView1.Rows[e.RowIndex].Cells[0].Text; get the id of the selected row DeleteRecord(id);//call delete method BindGridView();//rebind grid to reflect changes made }

Thats it! Hope you will find this article useful!


How to Select/Insert/Delete/Update records in SQL Server database with VB.NET. I presume the SQL Server database file D:\myDB.mdf contains a Table named Users which has two fields as below: Field Name Data Type name Varchar(20) phone Varchar(20) Imports System.Data.SqlClient Public Class Form1 ' Shared variables Dim con As SqlConnection = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")

Dim cmd As SqlCommand Dim myDA As SqlDataAdapter Dim myDataSet As DataSet Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ShowData() End Sub 'Binding database table to DataGridView Public Sub ShowData() cmd = New SqlCommand("Select * FROM Users", con) If con.State = ConnectionState.Closed Then con.Open() myDA = New SqlDataAdapter(cmd) myDataSet = New DataSet() myDA.Fill(myDataSet, "MyTable") DataGridView1.DataSource = myDataSet.Tables("MyTable").DefaultView End Sub ' Retrieve/Select records Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click cmd = New SqlCommand("SELECT * FROM Users Where name='Martin'", con) If con.State = ConnectionState.Closed Then con.Open() Dim sdr As SqlDataReader = cmd.ExecuteReader() While sdr.Read = True MessageBox.Show(sdr.Item("name") & " " & sdr.Item("phone")) End While sdr.Close() End Sub ' Insert record Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click cmd = New SqlCommand("Insert Into Users(name, phone) Values('phenry', 88866677)", con) If con.State = ConnectionState.Closed Then con.Open() cmd.ExecuteNonQuery() ShowData() 'Rebinding to DataGridView and view result End Sub ' Update record Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click cmd = New SqlCommand("Update Users Set phone=34 Where name='Martin'", con) If con.State = ConnectionState.Closed Then con.Open() cmd.ExecuteNonQuery() ShowData() 'Rebinding to DataGridView and view result End Sub 'Delete record Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click cmd = New SqlCommand("Delete * From Users Where name='Martin'", con) If con.State = ConnectionState.Closed Then con.Open() cmd.ExecuteNonQuery() ShowData() 'Rebinding to DataGridView and view result End Sub

' Dispose Database Connection object Private Sub Form4_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles My Base.FormClosed con.Close() con = Nothing End Sub End Class

Select, Insert, Update, Delete Using Stored Procedure in SQL Server 2008
Here, we will see how to create select, insert, update, delete statements using stored procedure. Let's take a look at a practical example. We create a table. Creating Table CREATE TABLE employee( id INTEGER NOT NULL PRIMARY KEY, first_name VARCHAR(10), last_name VARCHAR(10), salary DECIMAL(10,2), city VARCHAR(20), ) Now insert some values in the table and using select statement to select a table. INSERT INTO employee GO INSERT INTO employee GO INSERT INTO employee go INSERT INTO employee go select * from employee Table looks like this. VALUES (2, 'Monu', 'Rathor',4789,'Agra'); VALUES (4, 'Rahul' , 'Saxena', 5567,'London');

VALUES (5, 'prabhat', 'kumar', 4467,'Bombay'); VALUES (6, 'ramu', 'kksingh', 3456, 'jk');

Figure 1 Stored procedure for Select, insert, update, delete Here, we create a stored procedure for select,insert,update,delete statements to select the data from the table. Alter PROCEDURE MasterInsertUpdateDelete ( @id INTEGER, @first_name VARCHAR(10), @last_name VARCHAR(10), @salary DECIMAL(10,2), @city VARCHAR(20), @StatementType nvarchar(20) = '' ) AS BEGIN IF @StatementType = 'Insert' BEGIN insert into employee (id,first_name,last_name,salary,city) values( @id, @first_name, @last_name, @salary, @city) END IF @StatementType = 'Select' BEGIN select * from employee END IF @StatementType = 'Update' BEGIN UPDATE employee SET First_name = @first_name, last_name = @last_name, salary = @salary, city = @city WHERE id = @id END else IF @StatementType = 'Delete' BEGIN DELETE FROM employee WHERE id = @id END end Now press F5 to execute the stored procedure. Now open object explorer and select storeprocedure MasterInsertUpdateDelete. Stored Procedure to Check Insert StatementType = 'Insert'

MasterInsertUpdateDelete -> right click select execute stored procedure...

Figure2 Execute procedure window will be open.

Figure3 Now for insert we fill the data in required field. StatementType=insert

Figure4 Click on the ok Button. and check in the employee table with following inserted data.

Figure5 Stored Procedure to Check update MasterInsertUpdateDelete -> right click select execute stored procedure... Execute procedure window will be open. StatementType = 'Update'

Figure6 Click on the ok Button. and check in the employee table with following updated data where id is 7.

Figure7 Stored Procedure to Check Delete MasterInsertUpdateDelete -> right click select execute stored procedure... Execute procedure window will be open. StatementType = 'Delete'

Figure8

we delete record from table which has id=2 Click on the ok Button. and check in the employee table with following deleted data where id is 2.

C#.Net DataGridView Insert,Update,Select,Delete using Stored procedure


C#.Net DataGridView Insert,Update,Select,Delete using Stored procedure 1.create new winform add one datagrid ,3 label and 3 TextBox 2. add 3 button for insert,update,delete 3.create stored procedure for all Inset query using stored Procedure: create procedure insertemp1 (@id int,@name varchar(100),@sal int) As insert into parthi values(@id,@name,@sal)

Select query using stored Procedure: Create Procedure insertemp2 As SELECT * FROM parthi Update query using stored procedure: create procedure insertemp3 (@id int,@name varchar(100),@sal int) As update parthi set name=@name,salary=@sal where id=(@id) Delete query using stored procedure: create procedure insertemp4(@id int) as delete from parthi where id=@id

Form1.cs:

using using using using using using using using using

System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; System.Data.SqlClient;

namespace gridEdit { public partial class Form1 : Form { SqlConnection con =new SqlConnection("server =192.168.3.150;uid=sa;pwd=sa@1234;database=nss1"); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //this.Size = Screen.PrimaryScreen.Bounds.Size; //this.Location = new Point(0, 0); SqlCommand command = new SqlCommand("insertemp2", con); SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet ds = new DataSet(); adapter.Fill(ds, "parthi"); this.dataGridView1.DataSource = ds; this.dataGridView1.DataMember = "parthi"; } private void btninsert_Click(object sender, EventArgs e) { int txtid =Convert.ToInt32(textBox1.Text); string txtname = textBox2.Text;

int txtsal = int.Parse(textBox3.Text); SqlCommand cmd = new SqlCommand("insertemp1", con); con.Open(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "insertemp1"; cmd.Parameters.AddWithValue("@id", txtid); cmd.Parameters.AddWithValue("@name", txtname); cmd.Parameters.AddWithValue("@sal", txtsal); cmd.ExecuteNonQuery(); MessageBox.Show("inserted......"); con.Close(); } private void button2_Click(object sender, EventArgs e) { int txtid = Convert.ToInt32(textBox1.Text); string txtname = textBox2.Text; int txtsal = int.Parse(textBox3.Text); SqlCommand cmd = new SqlCommand("insertemp3", con); con.Open(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "insertemp3"; cmd.Parameters.AddWithValue("@id", txtid); cmd.Parameters.AddWithValue("@name", txtname); cmd.Parameters.AddWithValue("@sal", txtsal); cmd.ExecuteNonQuery(); MessageBox.Show("updated......"); con.Close(); } private void button3_Click(object sender, EventArgs e) { int txtid = Convert.ToInt32(textBox1.Text); SqlCommand cmd = new SqlCommand("insertemp4", con); con.Open(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "insertemp4"; cmd.Parameters.AddWithValue("@id", txtid); cmd.ExecuteNonQuery(); MessageBox.Show("deleted......"); con.Close(); }

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { int i; i = dataGridView1.SelectedCells[0].RowIndex; textBox1.Text = dataGridView1.Rows[i].Cells[0].Value.ToString(); textBox2.Text = dataGridView1.Rows[i].Cells[1].Value.ToString(); textBox3.Text = dataGridView1.Rows[i].Cells[2].Value.ToString();

}------

How to Insert, Edit, Update and Delete Data with DataGridView in Windows Form C#.net ||Inserting , Updating and Deleting with DataGridView in Windows forms C#.net
Labels: C#.net, GridView, Windows Applications In this article I am showing to Inserting , Editing , Updating and Deleting options with DataGridview. For that I am Designing form with two textboxes with Name and Location ,DataGridview to display data and four buttons to Save , Edit , Update and Delete. To do this just follow below steps: In form load I am binding the data from database. In save button click event saving data to database which are inserted into the name and location textboxes. In Delete button click event Deleting the selected row data in DataGridview from database. In Edit button Click event filling the selected data from Gridview into Name and location textboxes. In Update Button click event updating data which are edited the name and location textboxes. Write the following code in Form.cs : Form.cs Code : using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Configuration; using System.Data.SqlClient; namespace savedata { public partial class Form1 : Form { SqlConnection con = newSqlConnection(ConfigurationManager.ConnectionStrings["Sqlcon"].ConnectionString); public Form1() { InitializeComponent(); Bind(); } private void Clear() { txtName.Text = string.Empty; txtLocation.Text = string.Empty; } private void btnSave_Click(object sender, EventArgs e) { con.Open(); SqlCommand cmd = new SqlCommand("Insert Into Test_Data(Name,Location) Values (@Name,@Location)", con); cmd.Parameters.AddWithValue("Name", txtName.Text); cmd.Parameters.AddWithValue("Location", txtLocation.Text); cmd.ExecuteNonQuery(); con.Close(); MessageBox.Show("Inserted sucessfully"); Bind(); Clear(); } private void Bind() { con.Open(); SqlDataAdapter da = new SqlDataAdapter("select * from Test_Data", con); DataTable dt = new DataTable();

da.Fill(dt); dataGridView1.DataSource = dt; con.Close(); } private void btnDelete_Click(object sender, EventArgs e) { SqlCommand delcmd = new SqlCommand(); if (dataGridView1.Rows.Count > 1 && dataGridView1.SelectedRows[0].Index != dataGridView1.Rows.Count - 1) { delcmd.CommandText = "DELETE FROM Test_Data WHERE ID=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + ""; con.Open(); delcmd.Connection = con; delcmd.ExecuteNonQuery(); con.Close(); dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); MessageBox.Show("Row Deleted"); } Bind(); } private void btnUpdate_Click(object sender, EventArgs e) { con.Open(); SqlCommand cmd = new SqlCommand("Update Test_Data set Name=@Name,Location=@Location Where(Name=@Name)", con); cmd.Parameters.AddWithValue("@Name", txtName.Text); cmd.Parameters.AddWithValue("@Location", txtLocation.Text); cmd.ExecuteNonQuery(); MessageBox.Show("updated......"); con.Close(); Bind(); Clear(); } private void btnEdit_Click_1(object sender, EventArgs e) { int i; i = dataGridView1.SelectedCells[0].RowIndex; txtName.Text = dataGridView1.Rows[i].Cells[1].Value.ToString(); txtLocation.Text = dataGridView1.Rows[i].Cells[2].Value.ToString(); } } }

Then run the application you will get output like below:

Das könnte Ihnen auch gefallen