抱歉有问题。我试图在asp.net gridview中显示所选字段。我可以显示除“product_img”之外的所有内容,我应该在gridview中显示相关图片。
当我将图像控件的图像url附加到代码时,问题出现在gridview中 - '<%#"InsertProd.aspx.cs?path" %>'
无法正常工作,因为它会给我空图像/断开的图像链接。
是我将dr.read上的路径绑定到gridview中的imageURL错误的方法吗? 我已经在页面后面编辑了我的代码,并将aspx页面设计为底部。
设计器页面的代码位于下方,向下滚动。谢谢。
protected void gvShowInsert_SelectedIndexChanged(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("SELECT product_cakeName, product_price,
product_qty,product_desc,product_img FROM Tbl_Products", conn);
conn.Open();
SqlDataReader dr;
dr = cmd.ExecuteReader();
if(dr.Read())
{
//Context.Response.BinaryWrite((byte[])dr[dr.GetOrdinal("product_img")]);
byte[] path = (byte[])dr["product_img"]; //read the path of image
}//imageControl.ImageUrl = path; //set the path to image control
gvShowInsert.DataSource = dr;
gvShowInsert.DataBind();
dr.Close();
conn.Close();
}
这是我的设计aspx:
<Columns>
<asp:TemplateField HeaderText="cake-name">
<ItemTemplate>
<asp:Label ID="lblHeaderName"
runat="server"Text='<%#Eval("product_cakeName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="price">
<ItemTemplate>
<asp:Label ID="lblHeaderPrice" runat="server" Text='<%#Eval("product_price")
%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="qty">
<ItemTemplate>
<asp:Label ID="lblHeaderQty" runat="server" Text='<%#Eval("product_qty") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="desc">
<ItemTemplate>
<asp:Label ID="lblHeaderDesc" runat="server" Text='<%#Eval("product_desc") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="img">
<ItemTemplate>
<asp:Image ID="imageControl" runat="server" ImageUrl='<%#"InsertProd.aspx.cs?path" %>' >
</asp:Image>
</ItemTemplate>
</asp:TemplateField>
</Columns>
答案 0 :(得分:3)
如果您拥有存储在数据库中的图像路径或图像文件名,为什么不像执行其他控件的值那样分配它?像这样:
如果您的数据库存储整个路径,请执行以下操作:
<asp:Image ID="imageControl" runat="server" ImageUrl='<%# Eval("product_img") %>'></asp:Image>
如果您的数据库只有文件名,请执行以下操作:
<asp:Image ID="imageControl" runat="server" ImageUrl='<%# String.Format("~/path/to/image/" + Eval("product_img")) %>'></asp:Image>
祝你好运!
答案 1 :(得分:0)
您需要一个用于ASP.NET图像服务器控件的URL,因此您必须在另一个请求中提供图像,ashx处理程序适合于此。因此,从初始sql select中删除二进制图像字段,稍后您将获取它。
第一步是渲染url表单图像,希望你在该表中有真正的ID,而不仅仅是product_cakeName,如下所示:
<asp:Image ID="imageControl" runat="server" ImageUrl='ServeImage.ashx?cake=<%#Eval("product_cakeName") %>' >
然后创建ServeImage.ashx,从数据库中选择仅通过param&#34; cake&#34;请求的蛋糕的二进制图像字段,然后提供它(设置Request.OutputStream或使用Request.BinaryWrite)。
以下是一个完整的示例:http://www.shabdar.org/asp-net/81-display-images-in-gridview-from-database-in-aspnet.html