Avatar billede karsten_larsen Praktikant
03. april 2007 - 10:40 Der er 12 kommentarer og
2 løsninger

Sætte event på button i reapeater

Hvordan kan der sættes en event på en bestemt knap i en repeater.

F.eks.
<asp:Button ID="btnCancel" runat="server" Text="Annuller"/>

Som befinder sig i <FooterTemplate>
       
??:-) karsten_larsen
Avatar billede snepnet Nybegynder
03. april 2007 - 10:42 #1
På helt normal vis:
<asp:Button ID="btnCancel" runat="server" Text="Annuller" OnClick="SomeHandler"/>

Og så en
protected void SomeHandler(object sender, EventArgs e)
{
  // kode
}

Mvh
Avatar billede karsten_larsen Praktikant
03. april 2007 - 10:58 #2
hmm, ja det fungere også fint hvis den ikke befinder sig i en repeater. VS vil ikke accepter
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub

?:-) karsten_larsen
Avatar billede karsten_larsen Praktikant
03. april 2007 - 11:00 #3
Får følgende fejl
Handles clause requires a WithEvents variable defined in the containing type or one of its base types
Avatar billede neoman Novice
03. april 2007 - 11:14 #4
Ja - det er fordi den ikke kender knappen. Prøv at fjerne Handles clause, altså Handles Button1.Click
Avatar billede snepnet Nybegynder
03. april 2007 - 11:31 #5
Du kan abbonere på itemcommand istedet, og der finde ud af hvad der er sket.
Jeg er ikke VB-mand... i C# er det ikke noget problem at gøre som beskrevet (der fortæller man som du kan ikke handleren hvad den håndterer), så det kan formentlig også gøres i vb.
Ellers kan du abbonnere på ItemCommand på selve repeateren... Der får du et argument med med en stak fornuftige properties på du kan bruge til at finde ud af hvad der er sket - og hvor.
Mvh
Avatar billede karsten_larsen Praktikant
03. april 2007 - 11:51 #6
neoman -> fejler stadig ved at fjerne Handles clause

snepnet -> jeg abonnerer på itemcommand i forbindelse med send knappen. Det fungerer fint. Det er cancel knappen der bøvler.

Jeg kan hente den ind således:

        Dim b As Button
        b = CType(e.Item.FindControl("btnCancel"), Button)

men ved ikke lige hvordan jeg kommer videre herfra
Avatar billede neoman Novice
03. april 2007 - 12:02 #7
Og du har en repeater og ej en formview ? (Siden du har en "footer" template?) I en formview fungerer det som beskrevet - dvs man kan trække en knap ind i footer-templaten, og når man så tilføjer en OnClick eventhandler ved at dobbeltklikke på knappen, så dukker handleren op med en header uden Handles Button1.Click
Avatar billede karsten_larsen Praktikant
03. april 2007 - 12:20 #8
hmm
En hel ren side, trækker en reapeater ind på aspx siden, tilføjer label og knap så har jeg følgende:
        <asp:Repeater ID="Repeater1" runat="server">
        <HeaderTemplate ></HeaderTemplate>
       
        <ItemTemplate >
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        </ItemTemplate>
        <FooterTemplate >
            <asp:Button ID="Button1" runat="server" Text="Button" />
        </FooterTemplate>
       
        </asp:Repeater>
Skifter til design view og dobbelt klikker på knappen og følgende kommer frem i codebehind
  Protected Sub Repeater1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Repeater1.ItemCommand

    End Sub

I code behind kan knappen ikke findes og tildeles en seperat event. Det går fint hvis knappen er udenfor Repeateren.

??:-) karsten_larsen
Avatar billede neoman Novice
03. april 2007 - 12:48 #9
Har lige kørt din kode og får det samme som du. Men i "source" kan du finde ud af hvilken knap som har sendt eventet, så kan du jo lave din håndtering i Item.Command eventet.

    Protected Sub Repeater1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Repeater1.ItemCommand

'skriver den tekst som du har givet din button     
MsgBox(CType(e.CommandSource, Button).Text)

    End Sub
Avatar billede neoman Novice
03. april 2007 - 12:48 #10
oopz - i e altså
Avatar billede karsten_larsen Praktikant
03. april 2007 - 13:15 #11
cool - det virker nu - mange tak for hjælpen. Vil du lave et svar?
Avatar billede neoman Novice
03. april 2007 - 13:19 #12
Fint nok - men det er snepnet som ledte os ind på det rette spor, så jeg synes vi skal dele æren (og points). Hvis enig så vent lige til snepnet også får lagt et svar.
Avatar billede karsten_larsen Praktikant
03. april 2007 - 13:38 #13
helt okay - vi venter
Avatar billede snepnet Nybegynder
03. april 2007 - 16:01 #14
Oki... også et herfra så :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