This article shows you how to bind data in GridView controls without using any database. Also, we will learn here how to bind controls with data without using a database. Additionally, how to handle gridview common event in this will be discussed. Here I’ve described more events such as Edit, Update and Delete event.

This is using Image uploading and binding in GridView and then updating image in GridView.

Also read the following articles:

Binding Data Using ListView and GridView in ASP.NET without Database
Binding Data in ListView on LinkButton Click

Initial Chamber

Step 1


Open Visual Studio and create an empty website, then provide a suitable name such as BindImageWithoutDB.

Step 2

In Solution Explorer you will get your empty website, then add some web forms.

BindImageWithoutDB (your empty website). Right-click and select Add New Item Web Form. Name it BindImageWithoutDB.aspx.

Design Chamber

Step-3

Open the BindImageWithoutDB.aspx file and write some code for the design of the application.

Step3.1

Put stylesheet code in head chamber of page.

Set your style of page according to your need of design as in the following:
  1. <style type="text/css">
  2. body {
  3. color: #333;
  4. text-align: center;
  5. background-color: aqua;
  6. }
  7. </style>
Step3.2

Choose control from toolbox and put on your design page as in the following code snippet:
  1. <div style="float: left">
  2. <asp:Label ID="Label1" runat="server" Text="Display an Image :"></asp:Label>
  3. <asp:FileUpload ID="FileUpload1" runat="server" />
  4. <asp:Button ID="btnUpload" runat="server" Text="Display" OnClick="UploadImage" />
  5. </div>
  6. <asp:Label ID="lblResult" runat="server" />
  7. <br />
  8. <br />
  9. <div style="float: left">
  10. <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCancelingEdit="GridView1_RowCancelingEdit" DataKeyNames="imgname" CellPadding="4"
  11. OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting" HeaderStyle-BackColor="Tomato">
  12. <Columns>
  13. <asp:TemplateField HeaderText="Sr.No" HeaderStyle-Width="200px">
  14. <ItemTemplate>
  15. <asp:Label ID="lblImgId" runat="server" Text='<%#Container.DataItemIndex+1%>'></asp:Label>
  16. </ItemTemplate>
  17. </asp:TemplateField>
  18. <asp:TemplateField HeaderText="Date">
  19. <ItemTemplate>
  20. <asp:Label ID="lblDate" runat="server" ClientIDMode="Static" Text='<%# DataBinder.Eval(Container.DataItem,"imgdate") %>'></asp:Label>
  21. </ItemTemplate>
  22. </asp:TemplateField>
  23. <asp:TemplateField HeaderText="Name">
  24. <ItemTemplate>
  25. <asp:Label ID="lblTextBox1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"imgname") %>'></asp:Label>
  26. </ItemTemplate>
  27. </asp:TemplateField>
  28. <asp:TemplateField HeaderText="Image Name">
  29. <ItemTemplate>
  30. <asp:Image ID="Image" runat="server" Height="100px" Width="20%" ImageUrl='<%# DataBinder.Eval(Container.DataItem,"imgurl") %>' />
  31. </ItemTemplate>
  32. <EditItemTemplate>
  33. <asp:Image ID="img_user" runat="server" ImageUrl='<%# Eval("imgurl") %>'
  34. Height="80px" Width="100px" /><br />
  35. <asp:FileUpload ID="FileUpload1" runat="server" />
  36. </EditItemTemplate>
  37. </asp:TemplateField>
  38. <asp:TemplateField HeaderStyle-Width="150px">
  39. <ItemTemplate>
  40. <asp:LinkButton ID="LkB1" runat="server" CommandName="Edit">Edit</asp:LinkButton>
  41. <asp:LinkButton ID="LkB11" runat="server" CommandName="Delete">Delete</asp:LinkButton>
  42. </ItemTemplate>
  43. <EditItemTemplate>
  44. <asp:LinkButton ID="LkB2" runat="server" CommandName="Update">Update</asp:LinkButton>
  45. <asp:LinkButton ID="LkB3" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
  46. </EditItemTemplate>
  47. </asp:TemplateField>
  48. </Columns>
  49. </asp:GridView>
  50. </div
Design of page looks like the following:



Here, I've designed the GridView Control and uploader used some property as in the following code snippet:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="BindImageWithoutDB.aspx.cs" Inherits="BindImageWithoutDB" %>
  2. <!DOCTYPE html>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <title>C-sharp corner by Upendra</title>
  6. <style type="text/css">
  7. body {
  8. color: #333;
  9. text-align: center;
  10. background-color: aqua;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <form id="form1" runat="server">
  16. <div style="float: left">
  17. <asp:Label ID="Label1" runat="server" Text="Display an Image :"></asp:Label>
  18. <asp:FileUpload ID="FileUpload1" runat="server" />
  19. <asp:Button ID="btnUpload" runat="server" Text="Display" OnClick="UploadImage" />
  20. </div>
  21. <asp:Label ID="lblResult" runat="server" />
  22. <br />
  23. <br />
  24. <div style="float: left">
  25. <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCancelingEdit="GridView1_RowCancelingEdit" DataKeyNames="imgname" CellPadding="4"
  26. OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting" HeaderStyle-BackColor="Tomato">
  27. <Columns>
  28. <asp:TemplateField HeaderText="Sr.No" HeaderStyle-Width="200px">
  29. <ItemTemplate>
  30. <asp:Label ID="lblImgId" runat="server" Text='<%#Container.DataItemIndex+1%>'></asp:Label>
  31. </ItemTemplate>
  32. </asp:TemplateField>
  33. <asp:TemplateField HeaderText="Date">
  34. <ItemTemplate>
  35. <asp:Label ID="lblDate" runat="server" ClientIDMode="Static" Text='<%# DataBinder.Eval(Container.DataItem,"imgdate") %>'></asp:Label>
  36. </ItemTemplate>
  37. </asp:TemplateField>
  38. <asp:TemplateField HeaderText="Name">
  39. <ItemTemplate>
  40. <asp:Label ID="lblTextBox1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"imgname") %>'></asp:Label>
  41. </ItemTemplate>
  42. </asp:TemplateField>
  43. <asp:TemplateField HeaderText="Image Name">
  44. <ItemTemplate>
  45. <asp:Image ID="Image" runat="server" Height="100px" Width="20%" ImageUrl='<%# DataBinder.Eval(Container.DataItem,"imgurl") %>' />
  46. </ItemTemplate>
  47. <EditItemTemplate>
  48. <asp:Image ID="img_user" runat="server" ImageUrl='<%# Eval("imgurl") %>'
  49. Height="80px" Width="100px" /><br />
  50. <asp:FileUpload ID="FileUpload1" runat="server" />
  51. </EditItemTemplate>
  52. </asp:TemplateField>
  53. <asp:TemplateField HeaderStyle-Width="150px">
  54. <ItemTemplate>
  55. <asp:LinkButton ID="LkB1" runat="server" CommandName="Edit">Edit</asp:LinkButton>
  56. <asp:LinkButton ID="LkB11" runat="server" CommandName="Delete">Delete</asp:LinkButton>
  57. </ItemTemplate>
  58. <EditItemTemplate>
  59. <asp:LinkButton ID="LkB2" runat="server" CommandName="Update">Update</asp:LinkButton>
  60. <asp:LinkButton ID="LkB3" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
  61. </EditItemTemplate>
  62. </asp:TemplateField>
  63. </Columns>
  64. </asp:GridView>
  65. </div>
  66. </form>
  67. </body>
  68. </html>
Your design looks like the following figure:



CODE CHAMBER

Step 4

In the code chamber we will write some code so that our application works.
Adding the following namespaces under namespace section of your code behind page.
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Web;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
Code behind Page
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Web;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. public partial class BindImageWithoutDB : System.Web.UI.Page
  9. {
  10. protected void Page_Load(object sender, EventArgs e)
  11. {
  12. if (!IsPostBack)
  13. {
  14. BindImage();
  15. }
  16. }
  17. public class clsImg
  18. {
  19. //property for image uploading
  20. public string imgurl { get; set; }
  21. public string imgname { get; set; }
  22. public DateTime imgdate { get; set; }
  23. }
  24. protected void BindImage()
  25. {
  26. string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Images/TestImage/"));
  27. List<clsImg> images = new List<clsImg>(filesindirectory.Count());
  28. //file time
  29. DirectoryInfo DirInfo = new DirectoryInfo(Server.MapPath("~/Images/TestImage/"));
  30. var files = from file in DirInfo.EnumerateFiles()
  31. orderby file.LastWriteTime descending
  32. select file;
  33. DateTime lastModifie = System.DateTime.Now;
  34. DateTime creationTime;
  35. DateTime lastAccessTime;
  36. foreach (var fi in files)
  37. {
  38. lastModifie = fi.LastWriteTimeUtc;
  39. creationTime = fi.CreationTimeUtc;
  40. lastAccessTime = fi.LastWriteTimeUtc;
  41. images.Add(new clsImg { imgdate = lastModifie, imgname = fi.Name.ToString(), imgurl = String.Format("~/Images/TestImage/{0}", System.IO.Path.GetFileName(fi.Name.ToString())) });
  42. }
  43. GridView1.DataSource = images;
  44. GridView1.DataBind();
  45. }
  46. protected void UploadImage(object sender, EventArgs e)
  47. {
  48. if (FileUpload1.HasFile)
  49. {
  50. string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
  51. FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Images/TestImage/") + fileName);
  52. Response.Redirect(Request.Url.AbsoluteUri);
  53. }
  54. }
  55. //editing event
  56. protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
  57. {
  58. GridView1.EditIndex = e.NewEditIndex;
  59. BindImage();
  60. }
  61. //row updation event
  62. //here we try to update modification time but this I can't achieve this currently
  63. protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
  64. {
  65. //find image id of edit row
  66. string imageId = GridView1.DataKeys[e.RowIndex].Value.ToString();
  67. // find values for update
  68. Label name = (Label)GridView1.Rows[e.RowIndex].FindControl("lblTextBox1");
  69. FileUpload FileUpload1 = (FileUpload)GridView1.Rows[e.RowIndex].FindControl("FileUpload1");
  70. string path = "~/Images/TestImage/";
  71. string path1;
  72. if (FileUpload1.HasFile)
  73. {
  74. ImageDeleteFromFolder(name.Text.ToString());
  75. //path += FileUpload1.FileName;
  76. path += FileUpload1.FileName;
  77. //save image in folder
  78. FileUpload1.SaveAs(MapPath(path));
  79. }
  80. else
  81. {
  82. // use previous user image if new image is not changed
  83. Image img = (Image)GridView1.Rows[e.RowIndex].FindControl("img_user");
  84. path = img.ImageUrl;
  85. }
  86. GridView1.EditIndex = -1;
  87. BindImage();
  88. }
  89. //cancelation event
  90. protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
  91. {
  92. GridView1.EditIndex = -1;
  93. BindImage();
  94. }
  95. //deleting event
  96. protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
  97. {
  98. GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
  99. // Label lbldeleteid = (Label)row.FindControl("lblTextBox1");
  100. Label lblDeleteImageName = (Label)row.FindControl("lblTextBox1");
  101. //con = new SqlConnection(connStr);
  102. ImageDeleteFromFolder(lblDeleteImageName.Text.ToString());
  103. BindImage();
  104. }
  105. /// <summary>
  106. /// This function is used to delete image from folder when deleting in gridview.
  107. /// </summary>
  108. /// <param name="imagename">image name</param>
  109. protected void ImageDeleteFromFolder(string imagename)
  110. {
  111. string file_name = imagename;
  112. string path = Server.MapPath(@"~/Images/TestImage/" + imagename);
  113. FileInfo file = new FileInfo(path);
  114. if (file.Exists)//check file exsit or not
  115. {
  116. file.Delete();
  117. lblResult.Text = file_name + " file deleted successfully";
  118. lblResult.ForeColor = System.Drawing.Color.Green;
  119. }
  120. else
  121. {
  122. lblResult.Text = file_name + " This file does not exists ";
  123. lblResult.ForeColor = System.Drawing.Color.Red;
  124. }
  125. }
  126. }
Output





I hope you liked this. Have a good day. Thank you for reading.