This article shows how to bind data in GridView controls using database and to bind controls with a database. I will also show you how to handle GridView common events in this. Here I’ve described events such as Edit Update and Delete event.
Also, it displays Image uploading and binding in GridView and then updating image in GridView.
Also read
Initial Chamber
Step 1: Open Visual Studio and create an empty website, then provide a suitable name GridViewImageUploading.
Step 2: In Solution Explorer you will get your empty website, then add some web forms.
GridViewImageUploading (your empty website). Right click and select Add New Item Web Form. Name it GridViewImageUploading.aspx.
For SQL Server database
Create a database in SQL server and named it SchoolDB (You can give your own name)
Database Chamber
Step 3: In SchoolDB create a table named Product.
Here's the query
- USE [SchoolDB]
- GO
-
- /****** Object: Table [dbo].[Image_Details] Script Date: 07.09.2015 4:34:24 PM ******/
- SET ANSI_NULLS ON
- GO
-
- SET QUOTED_IDENTIFIER ON
- GO
-
- SET ANSI_PADDING ON
- GO
-
- CREATE TABLE [dbo].[Image_Details](
- [ImageId] [int] IDENTITY(1,1) NOT NULL,
- [ImageName] [varchar](50) NULL,
- [Image] [nvarchar](max) NULL
- ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-
- GO
-
- SET ANSI_PADDING OFF
- GO
Table Product structure is here Figure 1 After query execution Figure 2 Design Chamber Step 4: Open the GridViewImageUploading.aspx file and write some code for the design of the application. Step 4.1: Put stylesheet code in head chamber of page. Set your style of page according to your need of design. Step 4.2: Choose control from toolbox and put on your design page as in the following code snippet: - <h3 style="color: #0000FF; font-style: italic">Display Image and update, delete in GridView Using ASP.NET</h3>
- <div>
- <asp:FileUpload ID="fileupload" runat="server" />
- <asp:Button ID="upload" runat="server" Font-Bold="true" Text="Upload" OnClick="upload_Click" />
<asp:Label ID="lblResult" runat="server"/>
- <br />
- <br />
- </div>
- <div>
- <asp:GridView runat="server" ID="gvImage" AutoGenerateColumns="false" AllowPaging="True" OnRowCancelingEdit="gvImage_RowCancelingEdit" DataKeyNames="ImageId" CellPadding="4" OnRowEditing="gvImage_RowEditing" OnRowUpdating="gvImage_RowUpdating" OnRowDeleting="gvImage_RowDeleting" HeaderStyle-BackColor="Tomato">
- <Columns>
- <asp:TemplateField HeaderText="Sr.No" HeaderStyle-Width="200px">
- <ItemTemplate>
- <asp:Label ID="lblImgId" runat="server" Text='<%#Container.DataItemIndex+1%>'></asp:Label>
- </ItemTemplate>
- </asp:TemplateField>
- <asp:TemplateField HeaderText="Name" HeaderStyle-Width="200px">
- <ItemTemplate>
- <asp:Label ID="lblImageName" runat="server" Text='<%# Eval("ImageName") %>'></asp:Label>
- </ItemTemplate>
- <EditItemTemplate>
- <asp:TextBox ID="txt_Name" runat="server" Text='<%# Eval("ImageName") %>'></asp:TextBox>
- </EditItemTemplate>
- </asp:TemplateField>
- <asp:TemplateField HeaderText="Image" HeaderStyle-Width="200px">
- <ItemTemplate>
- <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Image") %>' Height="80px" Width="100px" />
- </ItemTemplate>
- <EditItemTemplate>
- <asp:Image ID="img_user" runat="server" ImageUrl='<%# Eval("Image") %>' Height="80px" Width="100px" />
- <br />
- <asp:FileUpload ID="FileUpload1" runat="server" />
- </EditItemTemplate>
- </asp:TemplateField>
- <asp:TemplateField HeaderStyle-Width="150px">
- <ItemTemplate>
- <asp:LinkButton ID="LkB1" runat="server" CommandName="Edit">Edit</asp:LinkButton>
- <asp:LinkButton ID="LkB11" runat="server" CommandName="Delete">Delete</asp:LinkButton>
- </ItemTemplate>
- <EditItemTemplate>
- <asp:LinkButton ID="LkB2" runat="server" CommandName="Update">Update</asp:LinkButton>
- <asp:LinkButton ID="LkB3" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
- </EditItemTemplate>
- </asp:TemplateField>
- </Columns>
- </asp:GridView>
- </div>
Design of page looks like the following: Figure 3 Here I've designed the GridView Control and used some property as in the following code snippet: - <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewImageUploading.aspx.cs" Inherits="GridViewImageUploading" %>
-
- <!DOCTYPE html>
-
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <title>An article by Upendra Pratap Shahi</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <h3 style="color: #0000FF; font-style: italic">Display Image and update, delete in GridView Using ASP.NET</h3>
- <div>
- <asp:FileUpload ID="fileupload" runat="server" />
- <asp:Button ID="upload" runat="server" Font-Bold="true" Text="Upload" OnClick="upload_Click" />
<asp:Label ID="lblResult" runat="server"/>
- <br />
- <br />
- </div>
- <div>
- <asp:GridView runat="server" ID="gvImage" AutoGenerateColumns="false" AllowPaging="True"
- OnRowCancelingEdit="gvImage_RowCancelingEdit" DataKeyNames="ImageId" CellPadding="4"
- OnRowEditing="gvImage_RowEditing" OnRowUpdating="gvImage_RowUpdating" OnRowDeleting="gvImage_RowDeleting" HeaderStyle-BackColor="Tomato">
- <Columns>
- <asp:TemplateField HeaderText="Sr.No" HeaderStyle-Width="200px">
- <ItemTemplate>
- <asp:Label ID="lblImgId" runat="server" Text='<%#Container.DataItemIndex+1%>'></asp:Label>
- </ItemTemplate>
- </asp:TemplateField>
- <asp:TemplateField HeaderText="Name" HeaderStyle-Width="200px">
- <ItemTemplate>
- <asp:Label ID="lblImageName" runat="server" Text='<%# Eval("ImageName") %>'></asp:Label>
- </ItemTemplate>
- <EditItemTemplate>
- <asp:TextBox ID="txt_Name" runat="server" Text='<%# Eval("ImageName") %>'></asp:TextBox>
- </EditItemTemplate>
- </asp:TemplateField>
- <asp:TemplateField HeaderText="Image" HeaderStyle-Width="200px">
- <ItemTemplate>
- <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Image") %>'
- Height="80px" Width="100px" />
- </ItemTemplate>
- <EditItemTemplate>
- <asp:Image ID="img_user" runat="server" ImageUrl='<%# Eval("Image") %>'
- Height="80px" Width="100px" /><br />
- <asp:FileUpload ID="FileUpload1" runat="server" />
- </EditItemTemplate>
- </asp:TemplateField>
- <asp:TemplateField HeaderStyle-Width="150px">
- <ItemTemplate>
- <asp:LinkButton ID="LkB1" runat="server" CommandName="Edit">Edit</asp:LinkButton>
- <asp:LinkButton ID="LkB11" runat="server" CommandName="Delete">Delete</asp:LinkButton>
- </ItemTemplate>
- <EditItemTemplate>
- <asp:LinkButton ID="LkB2" runat="server" CommandName="Update">Update</asp:LinkButton>
- <asp:LinkButton ID="LkB3" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
- </EditItemTemplate>
- </asp:TemplateField>
- </Columns>
- </asp:GridView>
- </div>
- </form>
- </body>
- </html>
Your design looks like following figure: Figure 4 Configure Chamber
Add the following code in Web.configure. - <connectionStrings>
- <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=true;Initial Catalog=SchoolDB;" providerName="System.Data.SqlClient"/>
- </connectionStrings>
Code Chamber Step 5: In the code chamber we will write the code so that our application works. Adding the following namespaces on namespace section of your code behind page- - using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Data;
- using System.Data.SqlClient;
- using System.IO;
- using System.ConFigureuration;
Now your page looks like the following: Code behind Page
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Data;
- using System.Data.SqlClient;
- using System.IO;
- using System.Configuration;
- public partial class GridViewImageUploading: System.Web.UI.Page
- {
- SqlConnection con;
- SqlDataAdapter da;
- DataSet ds;
- SqlCommand cmd;
- string connStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- ImageData();
- }
- }
- protected void upload_Click(object sender, EventArgs e)
- {
- try
- {
- string filename = Path.GetFileName(fileupload.PostedFile.FileName);
- fileupload.SaveAs(Server.MapPath("~/Images/" + filename));
- con = new SqlConnection(connStr);
- con.Open();
- cmd = new SqlCommand("insert into Image_Details (ImageName,Image) values(@ImageName,@Image)", con);
- cmd.Parameters.AddWithValue("@ImageName", filename);
- cmd.Parameters.AddWithValue("@Image", "Images/" + filename);
- cmd.ExecuteNonQuery();
- ImageData();
- }
- catch (Exception ex)
- {
- upload.Text = ex.Message;
- }
- }
- protected void ImageData()
- {
- con = new SqlConnection(connStr);
- con.Open();
- da = new SqlDataAdapter("select * from Image_Details", con);
- ds = new DataSet();
- da.Fill(ds);
- gvImage.DataSource = ds;
- gvImage.DataBind();
- }
-
- protected void gvImage_RowEditing(object sender, GridViewEditEventArgs e)
- {
- gvImage.EditIndex = e.NewEditIndex;
- ImageData();
-
- }
-
- protected void gvImage_RowUpdating(object sender, GridViewUpdateEventArgs e)
- {
-
- string imageId = gvImage.DataKeys[e.RowIndex].Value.ToString();
-
- TextBox name = (TextBox) gvImage.Rows[e.RowIndex].FindControl("txt_Name");
- FileUpload FileUpload1 = (FileUpload) gvImage.Rows[e.RowIndex].FindControl("FileUpload1");
- con = new SqlConnection(connStr);
- string path = "~/Images/";
- if (FileUpload1.HasFile)
- {
- path += FileUpload1.FileName;
-
- FileUpload1.SaveAs(MapPath(path));
- }
- else
- {
-
- Image img = (Image) gvImage.Rows[e.RowIndex].FindControl("img_user");
- path = img.ImageUrl;
- }
- SqlCommand cmd = new SqlCommand("update Image_Details set ImageName='" + name.Text + "',image='" + path + "' where ImageId=" + imageId + "", con);
- con.Open();
- cmd.ExecuteNonQuery();
- con.Close();
- gvImage.EditIndex = -1;
- ImageData();
- }
-
- protected void gvImage_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
- {
- gvImage.EditIndex = -1;
- ImageData();
- }
-
- protected void gvImage_RowDeleting(object sender, GridViewDeleteEventArgs e)
- {
- GridViewRow row = (GridViewRow) gvImage.Rows[e.RowIndex];
- Label lbldeleteid = (Label) row.FindControl("lblImgId");
- Label lblDeleteImageName = (Label) row.FindControl("lblImageName");
- con = new SqlConnection(connStr);
- con.Open();
- SqlCommand cmd = new SqlCommand("delete FROM Image_Details where ImageId='" + Convert.ToInt32(gvImage.DataKeys[e.RowIndex].Value.ToString()) + "'", con);
- cmd.ExecuteNonQuery();
- con.Close();
- ImageDeleteFromFolder(lblDeleteImageName.Text);
- ImageData();
- }
-
-
-
-
- protected void ImageDeleteFromFolder(string imagename)
- {
- string file_name = imagename;
- string path = Server.MapPath(@
- "~/Images/" + imagename);
- FileInfo file = new FileInfo(path);
- if (file.Exists)
- {
- file.Delete();
- lblResult.Text = file_name + " file deleted successfully";
- lblResult.ForeColor = System.Drawing.Color.Green;
- }
- else
- {
- lblResult.Text = file_name + " This file does not exists ";
- lblResult.ForeColor = System.Drawing.Color.Red;
- }
- }
- }
Output
When no data is uploaded. Figure 5 On first image upload- Figure 6
One more image uploaded- Figure 7 Two more images uploaded- Figure 8 On deleting an image- Figure 9
On Edit button click- Figure 10 On Image Pupation- Figure 11
Hope you liked this. Have a good day. Thank you for reading.