Avatar billede iraq_eyes Nybegynder
09. september 2010 - 14:44 Der er 13 kommentarer

Buttons i en repeater

Hej
Jeg har et problem med at få fat i de buttons der er i min repeater.
Altså jeg har en repeter der indeholder nogle knapper, nogle gange skal disse knapper være usynlige, men jeg kan ikke få fat i dem. Har prøvet følgende:

<asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate>
                <table>
                    <tr>
                        <td>
                        Navn
                        </td>
                        <td>
                         
                        </td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                      Lars
                    </td>
                    <td>
                        <asp:Button ID="Button1" runat="server" Text="Button" />
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>

    protected void Page_Load(object sender, EventArgs e)
    {
        Button knap = (Button)(Repeater1.FindControl("Button1"));
        knap.Visible = false;
    }

Men når jeg kører det får jeg følgende fejl:
$exception    {"Objektreferencen er ikke indstillet til en forekomst af et objekt."}    System.Exception {System.NullReferenceException}

Har i en løsning?
Avatar billede neoman Novice
09. september 2010 - 14:52 #1
Avatar billede lasserasch Juniormester
09. september 2010 - 15:18 #2
Du kan ikke gøre det i pageload.

Din button ligger i itemtemplate sektionen.
Derfor skal du hooke dig op på ItemDataBound eventet.

Her kan du finde din knap.


protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
           
        Button knap = (Button)(e.Item.FindControl("Button1"));
        knap.Visible = false;
        }



Mvh.
Lasse
Avatar billede lasserasch Juniormester
09. september 2010 - 15:20 #3
Og din frontend del skal så se således ud:

<asp:Repeater ID="Repeater1" runat="server"
        onitemdatabound="Repeater1_ItemDataBound">
    </asp:Repeater>
Avatar billede iraq_eyes Nybegynder
09. september 2010 - 15:26 #4
men hva nu hvis man har brug for at nogle knapper skal være usynlig før de vises, og ikke når man har trykke på dem?
Avatar billede lasserasch Juniormester
09. september 2010 - 15:35 #5
Er ikke helt sikker på jeg forstår hvad du mener, men du har jo mulighed for at køre alle mulige kodestykker når den repeater databindes.

Her skal du vel bestemme om knappen skal vises eller ej.

Men prøv at forklar mere præcist hvad du gerne vil have gjort så er det lidt nemmere at hjælpe.

Mvh.
Lasse
Avatar billede iraq_eyes Nybegynder
09. september 2010 - 15:44 #6
Jeg har en liste med nogle vare. En vare kan have op til 4 priser. Til hver pris er der er en knap. Men hvis varen kun har 2 priser så skal der kun vises to knapper. Dvs før jeg viser hele oversigten med varene så skal jeg kontrollere hver objektes antal priser for derefter skjule de unødvendige knapper..
Avatar billede janus_007 Nybegynder
09. september 2010 - 17:53 #7
Tjek denne her: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx

Som du kan se, og som Lasse var inde på, så har du adgang til din data vha.

void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {

          // This event is raised for the header, the footer, separators, and items.

          // Execute the following logic for Items and Alternating Items.
          if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {

            if (((Evaluation)e.Item.DataItem).Rating == "Good") {
                ((Label)e.Item.FindControl("RatingLabel")).Text= "<b>***Good***</b>";
            }
          }
      }   

Nu kender jeg ikke din data entitet, men i ovenstående eksempel er der databundet Evaluation.
Avatar billede janus_007 Nybegynder
09. september 2010 - 17:56 #8
Fik ikke lige spurgt.. hvordan ved du hvor mange priser et produkt har? Har du antallet med i data?
Avatar billede iraq_eyes Nybegynder
09. september 2010 - 20:39 #9
Yes man!
Tusind tak for hjælpen :)
Avatar billede lasserasch Juniormester
09. september 2010 - 20:53 #10
Aner ikke hvem du vil give points, men her er i hvert fald i svar fra mig.
Avatar billede janus_007 Nybegynder
10. september 2010 - 12:33 #11
Naaaaah Lasse, du skal da ikke ha nogle point *joking*
Avatar billede iraq_eyes Nybegynder
13. september 2010 - 07:54 #12
hvordan giver man point? Og kan man give til flere personer?
Avatar billede lasserasch Juniormester
13. september 2010 - 10:27 #13
Man vælger de svar man vil give points og trykker "accepter svar".

Ja, man kan godt dele points ud til flere.


Mvh.
Lasse
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