Avatar billede starfarm Nybegynder
29. august 2007 - 14:52 Der er 4 kommentarer og
1 løsning

DataBinder.Eval tjek for indhold

Hej eksperter.

Jeg sidder med et urgent problem. Jeg har et billede der bliver loaded fra databasen i en repeater vha. <img class="floatleft" src="upload<%# DataBinder.Eval(Container.DataItem, "showImage") %>"  alt="<%# DataBinder.Eval(Container.DataItem, "Title") %>" />

Dette virker fint, men jeg vil gerne fjerne HTML-tags, hvis der ikke er noget billede at vise(altså showImage er null). Hvordan gøres dette?? Jeg har forestillet mig at lægge det i et label og styre dettes visibility fra codebehind, men ved ikke hvordan jeg skal fange "showImage" i Code-behind.

Håber I kan hjælpe mig hurtigt.

Ps. Jeg koder i C#
Avatar billede neoman Novice
29. august 2007 - 15:07 #1
I repeaterens ItemDataBound event. Der er et eksempel her:
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.onitemdatabound(vs.80).aspx
Avatar billede neoman Novice
29. august 2007 - 15:09 #2
og så skal du nok vælge enten <asp:image eller <img runat="server" id="myImage" så du kan referere til den fra din code-behind
Avatar billede starfarm Nybegynder
29. august 2007 - 16:07 #3
Hej neoman

Jeg har nu forsøgt at få det tilpasset til mit projekt. Men men men det virker ikke helt som jeg gerne ville. Jeg får følgende fejl "Unable to cast object of type 'System.Data.DataRowView' to type 'showImg'."

Jeg lister lige koden:


Code-behind:

public void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item)
        {
            if (((showImg)e.Item.DataItem).showImage == "")
            {
                ((Label)e.Item.FindControl("lblImg")).Visible = false;
            }
        }

    }
    public class showImg
    {
        private string showimage;

        public showImg(string showimage)
        {
            this.showimage = showimage;
        }

        public string showImage
        {
            get { return showimage; }
        }
    }

og det andet kode:

<asp:Label ID="lblImage" runat="server">                         
            <img class="floatleft" src="upload<%# DataBinder.Eval(Container.DataItem, "showImage") %>"  alt="<%# DataBinder.Eval(Container.DataItem, "Title") %>" />
            </asp:Label>


Jeg prøver at lægge det ind i et label, og så derfra styre visibility. Håber du har tid til at hjælpe videre.

MvH
Avatar billede starfarm Nybegynder
29. august 2007 - 16:30 #4
Hej neoman

Langt om længe lykkedes det!!!! Super tak for hjælpen. Sådan gjorde jeg:

public void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
    {
        string myImg = DataBinder.Eval(e.Item.DataItem, "showImage").ToString();

        if (myImg == "-1")
            ((Label)e.Item.FindControl("lblImage")).Visible = false;
        else
            ((Label)e.Item.FindControl("lblImage")).Visible = true;

    }

Kast et svar og du får en godtepose :)
Avatar billede neoman Novice
29. august 2007 - 17:24 #5
Slurp/slik :-)
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