Avatar billede bergses Nybegynder
13. marts 2008 - 13:30 Der er 4 kommentarer og
1 løsning

Button i repeater-control. C#

Hej Ekspertpanel.

Har kigget løsningforslag igennem på siden, men alle er i VB. Og det virker ikke for mig, så jeg må misforstå noget.

Når jeg har en button i hver linje i min databundne repeater, hvordan fortæller jeg så min button i code-behind, hvilken præcis række med f.eks. hvilken titel, der er valgt.

tak.
Avatar billede crazysnap Seniormester
13. marts 2008 - 19:54 #1
Jeg forstår ikke helt spørgsmålet hva. Du giver din button
Avatar billede crazysnap Seniormester
13. marts 2008 - 19:56 #2
Hov, kom til at sende for tidligt.

Men jeg forstår ikke helt dit spørgsmål. Har du givet din button et CommandName og håndteret ItemCommand eventet på din repeater control?
Avatar billede crazysnap Seniormester
13. marts 2008 - 20:25 #3
Så for at give et lille kode eksempel:

HTML scriptet:

<asp:Repeater ID="rep1" runat="server" OnItemDataBound="rep1_ItemDataBound" OnItemCommand="rep1_ItemCommand">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
    <ItemTemplate>
          <tr>
              <td>
                  <asp:TextBox ID="tbTitel" runat="server" Text="<%# DataBinder.Eval(Container.DataItem, "Titel") %>"></asp:TextBox>
            </td>
            <td>
                  <asp:Button ID="btnTest" runat="server" Text="Get" CommandName="cmdGet" />
            </td>
          </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>



CodeBehind:

protected void rep1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "cmdGet")
    {
        TextBox txtTitel = e.Item.FindControl("tbTitel") as TextBox;
       
        //Her har du titlen
        string strTitel = txtTitel.Text;
    }
}



ItemCommand eventet (rep1_ItemCommand) bliver så kaldt når der trykkes på en af knapperne i din repeater. Du kan så herinde få fat i alle kontrollerne i den givne række.

vh.
Snap
Avatar billede bergses Nybegynder
14. marts 2008 - 08:16 #4
Det var lige det kodeafsnit, jeg havde brug for... Mange tak - smid et svar.

I øvrigt... Hvordan virker CommandArgument? Kan du hurtigt indarbejde et par kodelinjer i ovenstående eksempel, der demonstrerer det? Ellers bare tak.
Avatar billede crazysnap Seniormester
14. marts 2008 - 10:26 #5
Typisk bruges CommandArgument-feltet til at indholde en specifik nøgle for den givne række (primær nøglen for den record i databasen f.eks). Så et lille eksempel på hvordan CommandArgument kunne bruges:


HTML scriptet:

<asp:Repeater ID="rep1" runat="server" OnItemDataBound="rep1_ItemDataBound" OnItemCommand="rep1_ItemCommand">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
    <ItemTemplate>
          <tr>
              <td>
                  <asp:TextBox ID="tbTitel" runat="server" Text="<%# DataBinder.Eval(Container.DataItem, "Titel") %>"></asp:TextBox>
            </td>
            <td>
                  <asp:Button ID="btnTest" runat="server" Text="Get" CommandName="cmdGet" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Id") %>' />
            </td>
          </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>


CodeBehind:

protected void rep1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "cmdGet")
    {
        TextBox txtTitel = e.Item.FindControl("tbTitel") as TextBox;
       
        //Her har du titlen
        string strTitel = txtTitel.Text;
       
        //Har du så f.eks. et id
        int intId = Convert.ToInt32(e.CommandArgument);
    }
}


Glad for jeg kunne hjælpe.

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