Member 14872744 Ответов: 1

Изображения не отображаются при загрузке изображения из базы данных


Я использую элемент управления видом сетки для загрузки изображения из базы данных.
Я использую шаблон элемента внутри элемента управления видом сетки. Однако неверный url-адрес формируется ie. /Image/System.byte[] при привязке его к элементу управления изображением. Тип данных изображения
есть изображение в базе данных.
System.byte [] - это данные, которые я получаю при получении изображения продукта. Я не хочу использовать какой-либо обработчик для того же самого.
Как привязать изображение к элементу управления изображением? Это мой код.

Что я уже пробовал:

The following is the .aspx code
 <asp:TableRow ID="imagerow" runat="server">
    <asp:TableCell>
         <asp:Image ID="productimage" runat="server"
         ImageUrl='<%# Eval("ProductImage","~/Image/{0}") %>'Height="30px" Width="40px" />
    </asp:TableCell>
 </asp:TableRow>


The following is the .cs code

    try
    {
       using (SqlConnection connect = new SqlConnection(cs))
       {
          using (SqlCommand scmd = new SqlCommand("SELECT  * FROM Products", connect))
          {
               using (SqlDataAdapter da = new SqlDataAdapter(scmd))
               {
                   using (DataSet ds = new DataSet())
                   {
                                connect.Open();
                                da.Fill(ds);
                                gridviewproducts.DataSource = ds;
                                gridviewproducts.DataBind();
                                connect.Close();
                   }
               }
           }
       }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

1 Ответов

Рейтинг:
7

Sandeep Mewara

Вам нужно преобразовать массив байтов в изображение во время RowDataBound. Что-то вроде:

protected void grd_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType==DataControlRowType.DataRow)
        {
            System.Web.UI.HtmlControls.HtmlImage imageControl = (System.Web.UI.HtmlControls.HtmlImage)e.Row.FindControl("imageControl");
            if (((DataRowView)e.Row.DataItem)["imagedata"] != DBNull.Value)
            {
                imageControl.Src = "data:image/png;base64," + Convert.ToBase64String((byte[])(((DataRowView)e.Row.DataItem))["imagedata"]);
            }
        }
    }

Вот, взгляните:
Отображение изображений из базы данных SQL Server в ASP.Net управление GridView[^]

ОБНОВЛЕНИЕ:
<asp:GridView runat="server"  ID="grd" OnRowDataBound ="grd_RowDataBound"  >
                <Columns>
                    <asp:TemplateField HeaderText="image">
                        <ItemTemplate>
                          <img src='<%# Eval("imagedata") %>' id="imageControl" runat="server" />
                        </ItemTemplate>   
                    </asp:TemplateField> 
                </Columns>
            </asp:GridView>


Member 14872744

&ЛТ;АСП:tablerow идентификатор="imagerow" атрибут runat="сервер"и GT;
<asp:tablecell>
<asp:image id="productimage" runat="сервер"
="" url_изображения="&ЛТ;%#"сведения:изображение/png;base64, и" + "конвертировать".ToBase64String((байт[])функция eval("ProductImage")) %&ГТ;" высота="30 пикселей" ширина="40 пикселей"&ГТ;



Я сделал это... но все равно он не показывает мой образ. Используя инструмент разработчика, когда я проверяю Источник изображения, я получаю следующую ссылку src="data:Image/png;base64,flxJbWFnZVxrYWphbC5qcGc="

Я не могу понять, где я ошибаюсь

Sandeep Mewara

Обновленный образец aspx-файл

Member 14872744

До сих пор не видно изображения картинки образуется
и изображение не доступно по этому url-адресу.. что же мне делать ?

Sandeep Mewara

Все, что я могу сказать, - это устранить неполадки/отладить себя или найти кого-то, кто может отлаживать вместе с вами. Выше образец работает, вам нужно увидеть, что вызывает это не так.

Member 14872744

Большое Спасибо, сэр, я ошибся в своей базе данных. Я исправился и это сработало