Avatar billede sharp_moxy Nybegynder
05. november 2004 - 16:33 Der er 11 kommentarer og
1 løsning

asp:image i datagrid. med url fra tabel i mssql db

Mit datagrid bliver godt nok fyldt med data, men jeg kan ikke rigtig
få den til at vise billedet fra tabellen VareBillede.
håber der er en der kan hjælpe...


if (! IsPostBack)
            {
                this.dataSet21 = new web35554421.DataSet2();
                myComponent.FillDataSet(dataSet21);
                DataTable tmptbl = new DataTable();
                tmptbl.Columns.Add("VareNummer");
                tmptbl.Columns.Add("Navn");
                tmptbl.Columns.Add("VarePris");
                tmptbl.Columns.Add("Beskrivelse");
                tmptbl.Columns.Add("VareTypeID");
                tmptbl.Columns.Add("ProdSize");
                tmptbl.Columns.Add("VareBillede");
                foreach(DataRow dr in dataSet21.vare1.Rows)
                    if(dr["VareNummer"].ToString().Equals(Request.Params["VareNummer"].Trim()))
                    {
                        Object[] tmp = new Object[7];
                        tmp[0] = dr["VareNummer"];
                        tmp[1] = dr["Navn"];
                        tmp[2] = dr["VarePris"];
                        tmp[3] = dr["Beskrivelse"];
                        tmp[4] = dr["VareTypeID"];
                        tmp[5] = dr["ProdSize"];
                        tmp[6] = dr["VareBillede"];
                        tmptbl.Rows.Add(tmp);
                        break;                       
                    }       
               
                DataGrid1.DataSource = tmptbl;
                DataGrid1.DataBind();      // Add this line
            }
Avatar billede snepnet Nybegynder
05. november 2004 - 16:40 #1
hej :o)

jeg synes du skulle lave dig en template til dit datagrid, og på den måde sørge for at definere hvad der skal vises - og hvordan.
(så slipper du også få det med at lave en ny datatabel, og kan gå direkte på det dataset du har ved
.DataSource = dataSet21.vare1;
(går ud fra at det er et strongly typed dataset, og at vare1 er en tabel).

jeg går ud fra at balladen er - at du bare får vist en tekst, og ikke et billede i griddet, er det korrekt ?

mvh
Avatar billede snepnet Nybegynder
05. november 2004 - 16:43 #2
men bortset fra det kan du se teknikken til det med billedet her :
http://aspalliance.com/articleViewer.aspx?aId=141&pId=

mvh
Avatar billede sharp_moxy Nybegynder
05. november 2004 - 16:56 #3
Jo jeg får nemlig kun vist en tekst og ikke billedet.. det du siger er at jeg skal insætte:<asp:Image ImageUrl='<%# FormatURL DataBinder.EvalContainer.DataItem, "VareBillede")) %>'
            Runat=server />
i min .aspx side.
den ser sådan ud:
<asp:datagrid id="DataGrid1" runat="server" AllowPaging="True" PageSize="2" DataKeyField="VareNummer" AutoGenerateColumns="False" CellPadding="3" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#CCCCCC" Width="411px">
                <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
                <ItemStyle ForeColor="#000066"></ItemStyle>
                <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>
                <FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
                <Columns>
                    <asp:BoundColumn DataField="VareNummer" HeaderText="ID"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Navn" HeaderText="Navn"></asp:BoundColumn>
                    <asp:BoundColumn DataField="VarePris" HeaderText="Pris"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Varebillede" HeaderText="VareBillede"></asp:BoundColumn>
                </Columns>
                <PagerStyle Visible="False" HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
            </asp:datagrid>

men hvordan laver jeg controllen i min codebehind?
Avatar billede snepnet Nybegynder
05. november 2004 - 17:23 #4
Denne her :
<asp:BoundColumn DataField="Varebillede" HeaderText="VareBillede"></asp:BoundColumn>

Skal vise et billede, og ikke en tekst - så der skal du lave dig en templatekolonne istedet for en BoundColumn - sådan her :

<asp:TemplateColumn HeaderText="Image">
    <ItemTemplate>
        <asp:Image
        Width="150" Height="125"
        ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "Varenummer")) %>'
        Runat=server />
    </ItemTemplate>
</asp:TemplateColumn>

Dit grid ville så se sådan her ud :

<asp:datagrid id="DataGrid1" runat="server" AllowPaging="True" PageSize="2" DataKeyField="VareNummer" AutoGenerateColumns="False" CellPadding="3" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#CCCCCC" Width="411px">
    <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
    <ItemStyle ForeColor="#000066"></ItemStyle>
    <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>
    <FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
    <Columns>
        <asp:BoundColumn DataField="VareNummer" HeaderText="ID"></asp:BoundColumn>
        <asp:BoundColumn DataField="Navn" HeaderText="Navn"></asp:BoundColumn>
        <asp:BoundColumn DataField="VarePris" HeaderText="Pris"></asp:BoundColumn>
    </Columns>
    <asp:TemplateColumn HeaderText="Image">
        <ItemTemplate>
            <asp:Image
                Width="150" Height="125"
                ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "Varenummer")) %>'
                Runat=server />
        </ItemTemplate>
    </asp:TemplateColumn>
  <PagerStyle Visible="False" HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
</asp:datagrid>

hvis du så har metoden FormatURL i koden er det tilstrækkeligt... du skal ikke gøre yderligere i din code-behind.

Ved at sætte ImageUrl til en side der kan returnere et billede vil du få det vist.
(koden til en sådan side kan du se hvis du følger hans link : http://authors.aspalliance.com/das/readrealimage.html)

Hvis du ikke kan få det til at hænge samme råber du bare op.

mvh
Avatar billede sharp_moxy Nybegynder
05. november 2004 - 17:29 #5
lige en ting.. min side er lavet i C# og ikke i VB.. gør det nogen foreskel??
Avatar billede snepnet Nybegynder
05. november 2004 - 17:36 #6
nej ikke andet end at metoderne skal implementeres i C# istedet hvis du bruger Visual Studio (den laver pr. default tingene på en måde så du ikke kan mikse sprog i samme webprojekt).

hvis du ikke sådan lige umiddelbart kan oversætte dem kan du prøve med denne :
http://www.developerfusion.com/utilities/convertvbtocsharp.aspx

hvis du slet ikke kan få det til at spille laver jeg gerne et eksempel til dig i C# - bare sig til.

mvh
Avatar billede sharp_moxy Nybegynder
05. november 2004 - 17:44 #7
det vil jeg gerne :}  har rodet med det i 24 timer snart.. du får sq alle de point du vil have jeg er snart træt af at sidde og rode med det.. jeg har kigget hele nettet runt og downloadet samples til den store gulvmedalje.. men virker det nop...
siden skal virke som "detaljer" side når jeg vælger en detalje i kataloget <a href="detaljer.aspx?VareNummer={0}">vis detaljer</a> den henter godt nok detaljerne i db´en men som sagt kan den ikke vise billedet som billede men som tekst..
jeg vil blive meget taknemelig hvis du kan hjælpe mig til bunds.
Avatar billede snepnet Nybegynder
05. november 2004 - 17:51 #8
ok .... jeg tror vi gør noget andet så.
hvis du skriver din mailadresse her, sender jeg en solution tilbage (der skal bruges flere filer til løsningen, og det er lidt bikset hvis du skal samle projektet selv ved at klippe/klistre herfra.

det bliver smidt herud under alle omstændigheder, men det er bare så du kan få et eksempel op at køre.

hvad siger du til det ?

mvh
Avatar billede sharp_moxy Nybegynder
05. november 2004 - 17:57 #9
det lyder sq fedt mand.. den er per@cbr-forum.dk
Avatar billede sharp_moxy Nybegynder
06. november 2004 - 14:07 #10
hey makker smid lige et svar..
Avatar billede snepnet Nybegynder
07. november 2004 - 15:40 #11
Prøv denne template istedet :
Hvor du skifter images her "~/Images/" ud med den folder du bruger til billeder - relativ til root.

og DataItem.Link ud med DataItem.<den oplysning der indeholder stien til dig billede>

<asp:TemplateColumn>
    <ItemTemplate>
        <asp:Image id="Image1" ImageUrl='<%# "~/Images/" + DataBinder.Eval(Container, "DataItem.Link") %>' runat="server">
        </asp:Image>
    </ItemTemplate>
</asp:TemplateColumn>

mvh
Avatar billede snepnet Nybegynder
07. november 2004 - 16:37 #12
jeg havde lige misforstået lidt... troede at billederne lå i databasen (og det var sådan et eksempel jeg sendte tilbage via email), men det var kun stier til filer på disken der lå der - så der var lidt omveje til 07/11-2004 15:40:56 - men det skulle virke nu :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester