【问题标题】:How to view byte image in a gridview in asp.net?如何在 asp.net 的 gridview 中查看字节图像?
【发布时间】:2018-02-07 10:39:20
【问题描述】:

我想从数据库中查看 gridview 中的图像。在数据库中,图像采用字节格式。如何在网格视图中检索和查看该图像。我不知道如何为此编写代码。任何知道的人帮我解决这个问题。

从数据库中在gridview中显示图像。图像以字节为单位 格式。如何在 gridview 中将该字节码作为图像查看

这是我的代码:

//Image Upload Code Here//
protected void Add_Click(object sender, EventArgs e)
    {
        if (!FileUpload1.HasFile)
        {
            Label2.Visible = true;
            Label2.Text = "Please Select Image File";    //checking if file uploader has no file selected
        }
        else
        {
            int length = FileUpload1.PostedFile.ContentLength;
            byte[] pic = new byte[length];


            FileUpload1.PostedFile.InputStream.Read(pic, 0, length);
            string constr = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
            SqlConnection con = new SqlConnection(constr);
            //   SqlCommand cmd1 = new SqlCommand("insert into Student" + "(RegNo,Name,DOB,Gender,Address,Country,Picture) values(@RegNo,@Name,@DOB,@Gender,@Address,@Country,@photo)", con);
            SqlCommand cmd1 = new SqlCommand("sp", con);
            cmd1.CommandType = CommandType.StoredProcedure;  
            con.Open();
            cmd1.Parameters.AddWithValue("@RegNo", RegNo.Text);
            cmd1.Parameters.AddWithValue("@Name", Name.Text);
            cmd1.Parameters.AddWithValue("@DOB", Dob.Text);
            cmd1.Parameters.AddWithValue("@gender", Gender.SelectedValue);
            cmd1.Parameters.AddWithValue("@Address", Address.Text);
            cmd1.Parameters.AddWithValue("@Country", Country.Text);
            //cmd1.Parameters.AddWithValue("@datetime", DateTime.Now);
            cmd1.Parameters.AddWithValue("@Picture", pic);

        try
            {
                cmd1.ExecuteNonQuery();
                Label2.Visible = true;
                Label2.Text = "Image Uploaded Sucessfully";
                con.Close();//after Sucessfully uploaded image
            }
        catch(Exception ex)
            {
                throw ex;
            }
        }

    Response.Redirect("~/WebForm1.aspx");
    }
}

【问题讨论】:

标签: c# asp.net gridview


【解决方案1】:

实际上gridview没有名称为ItemdataBound的事件。对于 gridview,请改用 RowDataBound 事件。以下是相同的示例实现。

ASPX:

  <asp:GridView runat="server"  ID="grd" OnRowDataBound ="grd_RowDataBound"  >
                <Columns>
                    <asp:TemplateField HeaderText="image">
                        <ItemTemplate>
                          <img src='<%# Eval("imagedata") %>' id="imageControl" runat="server" />
                        </ItemTemplate>   
                    </asp:TemplateField> 
                </Columns>
            </asp:GridView>

CS:

protected void grd_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType==DataControlRowType.DataRow)
        {
            System.Web.UI.HtmlControls.HtmlImage imageControl = (System.Web.UI.HtmlControls.HtmlImage)e.Row.FindControl("imageControl");
            if (((DataRowView)e.Row.DataItem)["imagedata"] != DBNull.Value)
            {
                imageControl.Src = "data:image/png;base64," + Convert.ToBase64String((byte[])(((DataRowView)e.Row.DataItem))["imagedata"]);
            }
        }
    }

【讨论】:

    【解决方案2】:

    您可以使用网格视图的 ItemDataBound 事件,如下所示:

    if(e.Item.ItemType ==ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
      System.Web.UI.HtmlControls.HtmlImage imageControl =(System.Web.UI.HtmlControls.HtmlImage) e.Item.FindControl("imageControl");
                if (((DataRowView)e.Item.DataItem)["imagedata"] != DBNull.Value)
                {
                    imageControl.Src = "data:image/png;base64,"+ Convert.ToBase64String((byte[])((DataRowView)e.Item.DataItem)["imagedata"]) ;
                }
    }
    

    首先在你的grive视图中找到图像控件并将其图像源属性设置为“data:image/png;base64”+ Convert.ToBase64String((byte[])((DataRowView)e.Item.DataItem)[ "图像数据"]) ;

    注意:imagedata 应该是你用来保存图片的列名。

    【讨论】:

    • ItemdataBound怎么用。真的不知道怎么用。我是 Asp.net 的新手
    猜你喜欢
    • 2012-09-09
    • 2018-07-14
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多