显示来自ASP.Net数据库的图像

显示来自ASP.Net数据库的图像,asp.net,sql-server,Asp.net,Sql Server,我是ASP.net新手,在显示图像时遇到一些问题。我的设计师代码如下 <div id="directory-logo-wrapper" class="floatright"> <table id="wrapper1" runat="server"> <tr> <td> <img src="../images/companylogo.png" alt="LogoWr

我是ASP.net新手,在显示图像时遇到一些问题。我的设计师代码如下

<div id="directory-logo-wrapper" class="floatright">
    <table id="wrapper1" runat="server">
        <tr>
            <td>
                <img src="../images/companylogo.png" alt="LogoWrapper" />
                <%--<asp:Image ID="Image1" runat="server" Visible="true" alt="LogoWrapper" />--%>
            </td>
        </tr>
    </table>
</div>
protected void ShowImageFile(object sender, EventArgs e)
{
    byte[] bytes = {};
    bytes = (byte[])GetData("SELECT UploadedLogo FROM Projects WHERE ProjectId =" +  id).Rows[0]["UploadedLogo"];
    string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
    //Image1.ImageUrl = "data:image/png;image/jpg;base64," + base64String;
}

private DataTable GetData(string query)
{
    DataTable dt = new DataTable();
    string constr = ConnectionInfo.GetConnectionString();

    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand(query))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                sda.Fill(dt);
            }
        }
        return dt;
    }
}
问题:如何在代码隐藏中设置table:wrapper1 img src,因为它没有显示在代码隐藏中。我尝试使用Image1,但它也不能在代码隐藏中访问

请帮帮我

谢谢,拉贾

试试这个

<div id="directory-logo-wrapper" class="floatright">
    <table id="wrapper1" runat="server">
        <tr>
            <td>
               <img id="myimage" runat="server" src="../images/companylogo.png" />
            </td>
        </tr>
    </table>
</div>
编辑

访问GridView内部的图像

private string m_ConcatUrl;

protected void gridView_RowDataBound(Object sender, GridViewRowEventArgs args)
{
    if(args.Row.RowType == DataControlRowType.DataRow)
    {
        Image imgCtrl = (Image) args.Row.FindControl("imgCtrl");
        imgCtrl.ImageUrl = m_ConcatUrl;
    }
}
(或)

私有字符串m_concurl

protected void gridView_RowDataBound(Object sender, GridViewRowEventArgs args)
{
    if(args.Row.RowType == DataControlRowType.DataRow)
    {
        HtmlImage img = (HtmlImage) args.Row.FindControl("imgCtrl");
        imgCtrl.Src= m_ConcatUrl;
    }
}

您可以尝试以下方法:

HTML:


希望这有帮助。

您可以使用Asp:Image和ImageUrl。OP明确表示,该图像存储在数据库中,而不是存储在他的文件系统中……@marc_对此表示抱歉。现在我更改了我的图像不可访问。设置如下。我已经访问了我的图像,首先我定义了gridview。它给我的页面加载错误。错误为:CS1026:)应为
protected void gridView_RowDataBound(Object sender, GridViewRowEventArgs args)
{
    if(args.Row.RowType == DataControlRowType.DataRow)
    {
        HtmlImage img = (HtmlImage) args.Row.FindControl("imgCtrl");
        imgCtrl.Src= m_ConcatUrl;
    }
}
     <div id="directory-logo-wrapper" class="floatright">
        <table id="wrapper1" runat="server">
            <tr>
                <td>
                    <img src='<%# ImageUrl(ProjectId) %>' alt="LogoWrapper" />
                    <%--<asp:Image ID="Image1" runat="server" Visible="true" alt="LogoWrapper" />--%>
                </td>
            </tr>
        </table>
    </div>
private string ImageUrl(int ProjectId)
    {
    byte[] bytes = {};
        bytes = (byte[])GetData("SELECT UploadedLogo FROM Projects WHERE ProjectId =" +  ProjectId).Rows[0]["UploadedLogo"];
        string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
    return "data:image/png;image/jpg;base64," + base64String;
        //Image1.ImageUrl = "data:image/png;image/jpg;base64," + base64String;
    }

private DataTable GetData(string query)
{
    DataTable dt = new DataTable();
    string constr = ConnectionInfo.GetConnectionString();

using (SqlConnection con = new SqlConnection(constr))
{
    using (SqlCommand cmd = new SqlCommand(query))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.CommandType = CommandType.Text;
            cmd.Connection = con;
            sda.SelectCommand = cmd;
            sda.Fill(dt);
        }
    }
    return dt;
}
}