【问题标题】:c# asp.net displaying image in gridviewc# asp.net在gridview中显示图像
【发布时间】:2015-08-22 11:00:50
【问题描述】:

我希望在网格视图中显示图像。

我有一个包含 4 列的数据库 - id、作者、评论、文件名(其中包含 img 路径)

http://postimg.org/image/4loz8t9fb/

我有一个图片上传方法,所以当用户写下他的评论,选择一张照片并点击提交 - 他的名字,评论和照片路径进入数据库(并且照片本身被上传到'Images'文件夹中项目文件夹)。

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns = "False"
                   Font-Names = "Arial" Height="375px" Width="498px" DataSourceID="SqlDataSource2" >
                <Columns>

                    <asp:BoundField DataField="Author" HeaderText="Author" SortExpression="Author" />
                    <asp:BoundField DataField="Comment" HeaderText="Comment" SortExpression="Comment" />
                    <asp:BoundField DataField="FileName" HeaderText="FileName" SortExpression="FileName" />
                    <asp:TemplateField HeaderText="Image">

                      <ItemTemplate >

                        <asp:Image ID="Image1" runat="server" ImageUrl ='<%# Eval("FileName") %>' height="120px" Width="150px" />

                      </ItemTemplate>

                    </asp:TemplateField>
                </Columns>
                </asp:GridView>

这里是c#代码-

protected void addcomment_Click(object sender, EventArgs e)
    {
        string FileName = "";
        if (fileupload.PostedFile != null)
        {
             FileName = Path.GetFileName(fileupload.PostedFile.FileName);
             //Save files to disk
             fileupload.SaveAs(Server.MapPath("Images/" + FileName));

        }




        if (TextBox1.Text.Length > 0)
        {
            string name = firstName + " " + lastName;
            SqlCommand cmd = new SqlCommand("insert into comments values(@name,@comment,@filename)", conn);
            cmd.Parameters.AddWithValue("@name", name);
            cmd.Parameters.AddWithValue("@comment", TextBox1.Text);
            cmd.Parameters.AddWithValue("@filename", Server.MapPath("Images/" + FileName));
            conn.Open();
            cmd.ExecuteNonQuery();
            GridView1.DataBind();
            conn.Close();
            TextBox1.Text = "";
            Response.Redirect(Request.Url.AbsoluteUri);
        }
        else
        {
            TextBox1.Text = "You have to type something buddy!";
        }

    }

gridview数据源当然是sql。

这是数据库和网站的图像

http://postimg.org/image/4loz8t9fb/

【问题讨论】:

    标签: asp.net


    【解决方案1】:
    ImageUrl ='<%# "Images\\"+Eval("FileName") %>'
    

    试试这个方法...

    【讨论】:

      【解决方案2】:

      不要设置完整路径,

       string savepath = "~/Images/" + Filename;
      cmd.Parameters.AddWithValue("@filename", savepath));
      

      只要改变这一行就可以了

      甚至改变

       fileupload.SaveAs(Server.MapPath("~/Images/" + FileName));
      

      【讨论】:

      • 感谢您的建议,但您所写的仍在保存完整路径,并且一如既往地不起作用
      • 是的,我做到了,它仍然保存完整的图像路径(为什么使用完整路径是错误的?)
      • 如果你使用完整路径,数据库不会调用,因为数据库可能在不同的计算机上,所以它只调用服务器文件夹。
      • 检查这个...而不是在cmd参数调用字符串中调用server.mappath
      • 非常感谢!显然你的第一个答案是正确的。你救了我几个小时的挫败感。
      【解决方案3】:

      在您的设计视图中单击您的gridview 的智能标签并选择“编辑列...”,然后在打开的窗口中创建一个ImageField,并在其窗口右侧的“数据”窗格下的属性中将属性“DataImageUrlField”设置为包含您的网址的字段,在本例中为“文件名”。它应该可以工作。

      【讨论】:

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