【发布时间】:2021-05-31 02:19:43
【问题描述】:
我目前正在尝试将在 SQL 数据库中存储为 varbinary 的 QR 码位图图像显示到网格视图中,并且我参考了此链接:[https://www.aspsn-ps.com/文章/Display-images-from-SQL-Server-Database-in-ASP.Net-GridView-control.aspx]
但是,我无法在 gridview 表中正确显示图像,而且我似乎无法找出其中的错误。
这是我后面的gridview代码的代码:
if (!this.IsPostBack)
{
using (SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM PARCEL", conn))
{
DataTable dt = new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView dr = (DataRowView)e.Row.DataItem;
string imageUrl = "data:image/png;base64," + Convert.ToBase64String((byte[])dr["QRCode"]);
(e.Row.FindControl("QRCode") as Image).ImageUrl = imageUrl;
}
}
gridview 的标记:
<asp:GridView
ID="GridView1"
runat="server"
AutoGenerateColumns="False"
DataKeyNames="ConsignmentNumber"
AllowPaging="True"
HorizontalAlign="Center"
ViewStateMode="Enabled">
<Columns>
<asp:BoundField DataField="ConsignmentNumber" HeaderText="ConsignmentNumber" ReadOnly="True" SortExpression="ConsignmentNumber" />
<asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="QRCode" runat="server" HeaderText="QRCode" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我想知道是否有任何解决方案或建议可以应用以正确显示图像。
【问题讨论】:
-
目前的问题究竟是什么?您的 c# 代码或浏览器是否收到错误消息?正在编译吗?
-
您是否有意通过注释掉您的代码来将您的数据绑定到
GridView1.DataSource=...? -
@Marco 是的,它正在编译,并且在 c# 代码和浏览器中都没有给出任何错误代码。只是图像在gridview中根本没有显示。
-
您的 Databind 方法已被注释掉 - 如果您不绑定数据,它将不会呈现任何数据,因此 OnRowbound 事件将永远不会触发。
-
@Marco 很抱歉造成混乱,我已经编辑了我的帖子。我不应该对此发表评论。我已经删除了评论,但它仍然无法正确显示图像
标签: c# sql asp.net sql-server gridview