Hello
I have a grid view, but the problem is while updating the gridview image is null.
What will be the issue.
I am getting an error while updating a row, the image columns displys cross, rest of all are updating correctly.
Also it displays null image while debugging code.
My code for aspx.cs is:
public void bind()
{
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tbl_SqlImage", conn);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count != 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
conn.Close();
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
Label lblID = (Label)row.FindControl("lblID");
TextBox textName = (TextBox)row.FindControl("txtName");
TextBox textDesc = (TextBox)row.FindControl("txtDesc");
TextBox textActive = (TextBox)row.FindControl("txtActive");
TextBox textCreatedBy = (TextBox)row.FindControl("txtCreatedBy");
TextBox textCreatedDate = (TextBox)row.FindControl("txtCreatedDate");
FileUpload Image = (FileUpload)row.FindControl("FileUpload2");
GridView1.EditIndex = -1;
conn.Open();
SqlCommand cmd = new SqlCommand("UPDATE tbl_SqlImage set Name='" + textName.Text + "' , Description='" + textDesc.Text + "' , Image='" + convertByte(Image) + "' , Active='" + textActive.Text + "' , CreatedBy='" + textCreatedBy.Text + "' , CreatedDate='" + textCreatedDate.Text + "' where ID='" + lblID.Text.Trim() + "' ", conn);
cmd.ExecuteNonQuery();
conn.Close();
bind();
}
The code for aspx is:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainTable.aspx.cs" Inherits="commonlogin.MainTable" %>
<!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>GridView</title>
<link href="Content/StyleSheet1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns ="False"
AutoGenerateDeleteButton="True" onrowdeleted="GridView1_RowDeleted" AutoGenerateEditButton ="True"
onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating"
onpageindexchanging="GridView1_PageIndexChanging"
onrowcancelingedit="GridView1_RowCancelingEdit" AllowPaging="True" CssClass ="bodytext"
AllowSorting="True" CellPadding="3"
GridLines="None" onselectedindexchanged="GridView1_SelectedIndexChanged"
ForeColor="#333333" onrowdatabound="GridView1_RowDataBound"
BorderStyle="Solid" BorderWidth="5px" CellSpacing="1" >
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:TemplateField HeaderText="ID" >
<%----%>
<ItemTemplate>
<%----%>
<asp:Label ID="lblID" runat="server" CssClass="bodytext" Text='<%# Bind("ID") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" CssClass ="TextBox" Text='<%# Bind("Name") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblName" runat="server" CssClass="bodytext" Text='<%# Bind("Name") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Description">
<EditItemTemplate>
<asp:TextBox ID="txtDesc" runat="server" CssClass ="TextBox" Text='<%# Bind("Description") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblDesc" runat="server" CssClass="bodytext" Text='<%# Bind("Description") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Image">
<EditItemTemplate>
<%----%>
<%----%>
<asp:FileUpload ID="FileUpload2" runat="server" />
<asp:Button ID="btnUpdate" runat="server" OnClick="btnUpdate_Click" Text="Update Image" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<%----%>
</EditItemTemplate>
<ItemTemplate>
<%----%>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# string.Format("Handler1.ashx?ID={0}",Eval("ID"))%>'/>
<%----%>
<%----%>
<%----%>
<%----%>
<%----%>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" BackColor ="AliceBlue" />
<%----%>
</asp:TemplateField>
<asp:TemplateField HeaderText="Active">
<EditItemTemplate>
<asp:TextBox ID="txtActive" runat="server" CssClass ="TextBox" Text='<%# Bind("Active") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblActive" runat="server" CssClass="bodytext" Text='<%# Bind("Active") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="CreatedBy">
<EditItemTemplate>
<asp:TextBox ID="txtCreatedBy" runat="server" CssClass ="TextBox" Text='<%# Bind("CreatedBy") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblCreatedBy" runat="server" CssClass="bodytext" Text='<%# Bind("CreatedBy") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="CreatedDate">
<EditItemTemplate>
<asp:TextBox ID="txtCreatedDate" runat="server" CssClass ="TextBox" Text='<%# Bind("CreatedDate") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblCreatedDate" runat="server" CssClass="bodytext" Text='<%# Bind("CreatedDate") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#999999" BorderStyle="Dotted" Width="5px" />
<FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView><br />
<%----%>
<%----%>
<tr>
<td>
</div>
<asp:HyperLink ID="HyperLink1" CssClass ="wishlist " NavigateUrl ="~/TableAdd.aspx" runat="server">AddNew</asp:HyperLink><br /><br />
</td>
</tr>
<asp:label id="Messagelbl" forecolor="Red" CssClass="wishlist" runat="server"/>
</form>
</body>
</html>
The code for Handler.aspx
using System;
using System.Configuration;
using System.Web;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace commonlogin
{
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Int32 nID;
if (context.Request.QueryString["ID"] != null)
nID = Convert.ToInt32(context.Request.QueryString["ID"]);
else
throw new ArgumentException("No paramter specified");
context.Response.ContentType = "image/jpeg";
Stream strm = ShowEmpImage(nID);
byte[] buffer = new byte[4096];
int byteSeq = strm.Read(buffer, 0, 4096);
while (byteSeq > 0)
{
context.Response.OutputStream.Write(buffer, 0, byteSeq);
byteSeq = strm.Read(buffer, 0, 4096);
context.Response.BinaryWrite(buffer);
}
}
public Stream ShowEmpImage(int nID)
{
string conn = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
SqlConnection con = new SqlConnection(conn);
string sql = "SELECT Image FROM tbl_SqlImage WHERE ID=@ID";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ID", nID);
con.Open();
object img = cmd.ExecuteScalar();
try
{
return new MemoryStream((byte[])img);
}
catch
{
return null;
}
finally
{
con.Close();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
I am getting an error while updating a row, the image columns displys cross.rest of all are updating correctly.