【问题标题】:ASP.NET- Gridview not display imageASP.NET-Gridview 不显示图像
【发布时间】:2012-05-26 19:55:27
【问题描述】:
<form id="form1" runat="server">
<div>

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="bookname"  Height="504px" 
        Width="289px">
        <Columns>
            <asp:TemplateField HeaderText="image">
                <ItemTemplate>
                    <asp:Image ID="Image1" runat="server" 
                        ImageUrl='<%# String.Format("~/path/to/image/" + Eval("image")) %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("image") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="bookname" HeaderText="bookname" ReadOnly="True" 
                SortExpression="bookname" />
            <asp:BoundField DataField="price" HeaderText="price" SortExpression="price" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        SelectCommand="SELECT [image], [bookname], [price] FROM [books]">
    </asp:SqlDataSource>

我的图像字段保存​​在(SQL server 2005)中...并通过文件上传按钮将图像插入数据库... 现在我想在gridview中显示数据,但不显示gridview中显示的图像字段和其他字段,因为其他字段是文本格式。

【问题讨论】:

  • 我认为问题出在 ImageUrl=''....但我无法解决这个问题...请帮助我获取此代码
  • protected void Page_Load(object sender, EventArgs e) { string qry; string connection = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\WebSite1\App_Data\Database.mdf;Integrated Security=True;User Instance=True"; SqlConnection con; SqlCommand cmd; SqlDataSource sds = new SqlDataSource(); qry = "从书中选择 *"; sds = new SqlDataSource(connection, qry); GridView1.DataSource = sds; GridView1.DataBind(); }
  • 你把图片路径存入数据库了吗?

标签: c# asp.net sql-server gridview


【解决方案1】:
<asp:Image ID="Image1" runat="server" ImageUrl='<%# String.Format("~/path/to/image/{0}" , Eval("image")) %>' />   

您的问题是 string.Format 接受参数并且您正在使用 concat 操作。在这里我使用了{0} - stands for argument at/for index 0。同样对于多个参数,您可以使用string.Format("{0} {1} {2}",var1,var2,var3).

上面我假设 {0} 将被替换为带有扩展名的文件名,例如 abc.png。

<form id="form1" runat="server">
    <div>
       <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="bookname"  Height="504px" 
            Width="289px">
            <Columns>
                <asp:TemplateField HeaderText="image">
                    <ItemTemplate>
                        <asp:Image ID="Image1" runat="server" 
                            ImageUrl='<%# String.Format("~/path/to/image/{0}" , Eval("image")) %>' />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("image") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="bookname" HeaderText="bookname" ReadOnly="True" 
                    SortExpression="bookname" />
                <asp:BoundField DataField="price" HeaderText="price" SortExpression="price" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
            SelectCommand="SELECT [image], [bookname], [price] FROM [books]">
        </asp:SqlDataSource>

【讨论】:

    【解决方案2】:

    我更希望像

    ImageUrl='<%# this.ResolveUrl("~/path/to/image/" + Eval("image")) %>' />
    

    而不是string.Format

    【讨论】:

    • 使用 http 调试器 (Fiddler) 查看实际的请求 uri。
    • 任何其他选项......你能告诉我在gridview中显示图像吗......为此做了什么......比如为图像字段添加列,我在某处读到~/images/{ 0} ??对于 imageurlform ...这是什么?
    • 我看不出你的方法有任何缺陷。您只需调试请求并查看服务器响应的状态。在 Fiddler 中,您将看到所有内容:请求是否已发送(或未发送)、服务器是否对其进行处理以及向客户端发送的确切响应。很可能你只是因为输入错误的 uri 而得到 404 Not Found。
    【解决方案3】:

    当您的图像存储到数据库中时,您需要使用处理程序来检索图像。你可以在这里获得参考http://www.codeproject.com/Articles/271590/Show-an-image-saved-in-a-SQL-Table-on-an-ASP-Net-I

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2012-06-18
    相关资源
    最近更新 更多