How to Popular Image in Gridview?

0

I'm doing an application in Asp.NET , with Entity Framework and using the database Oracle and it's the following I'm uploading the image by a button and saving in the database with type% I want to be able to do this, but I need to have the image appear on the screen along with information from another table called BLOB , I was thinking of popular line by line with PRODUTOS , but I could not.

Database with BLOB image

  

Entity

GridViewwithimage

  

GridviewRenderinginBrowser

  

privatevoidcarregarImagem(){dt.Columns.Add("id");
        dt.Columns.Add("nome");
        dt.Columns.Add("valor_unit");
        dt.Columns.Add("imagem1");

        ProjetoContext bd = new ProjetoContext();
        List<PRODUTO> produtos = bd.PRODUTOes.ToList();
        List<IMG_PRODUTO> imagem = bd.IMG_PRODUTO.ToList();

        foreach (PRODUTO pr in produtos)
        {

            IMG_PRODUTO im = bd.IMG_PRODUTO.Find(pr.ID_IMAGEM);
            if (im != null && pr.ID_IMAGEM != 0)
            {
                //Image img = (Image)GridProdutos.Rows[1].Cells[4].FindControl
                byte[] byteImagem = im.IMAGEM;
                string img64Frente = Convert.ToBase64String(byteImagem);
                string imagemDataUrl = 
                  String.Format("data:image/png;base64, {0}", img64Frente);
                //img.ImageUrl = imagemDataUrl;
                dt.Rows.Add(pr.ID, pr.NOME, pr.VALOR_UNIT, imagemDataUrl);
            }
        }

        GridProdutos.DataSource = dt;
        GridProdutos.DataBind();

}

HTML CODE

        <asp:GridView ID="GridProdutos" runat="server" AutoGenerateColumns ="false" OnRowCommand ="GridProdutos_RowCommand" AllowPaging="true" OnPageIndexChanging="GridProdutos_PageIndexChanging" OnRowDataBound ="GridProdutos_RowDataBound">
        <columns>
            <asp:BoundField DataField ="id" HeaderText="Index" />
            <asp:BoundField DataField ="nome" HeaderText="Nome do Produto" />
            <asp:BoundField DataField ="valor_unit" DataFormatString="{0:c}" HeaderText="Valor Unitario" />
            <asp:TemplateField>
                <ItemTemplate>
                     <asp:Image ID="Image1" runat="server" Width="100" Height="100" />
                    <asp:Button ID ="btnAdiciona" runat="server" CommandName="AddItem" Text="Add Carrinho" CommandArgument='<%# Bind("id") %>'/>
                </ItemTemplate>
            </asp:TemplateField>

        </columns>
    </asp:GridView>
    
asked by anonymous 28.11.2017 / 13:55

1 answer

0

Well the command is very simple, code at disposal.

Asp.net - Web Form
to upload

<asp:FileUpload ID="FileUp" runat="server" Width="348px" />


Insert into database - BackEnd

                    img.IMAGEM = FileUp.FileBytes;
                    img.DESCRICAO = cxNome.Text;
                    img.ID = TotalImg;
                    bd.IMG_PRODUTO.Add(img);

recover image

                    byte[] byteImagem = im.IMAGEM;
                    string imagConvert = Convert.ToBase64String(byteImagem);
                    string imagemDataUrl = String.Format("data:imagem/png;base64, {0}", imagConvert);

Credit to @Virgilio Novic for the answer

    
14.12.2017 / 13:40