Avatar billede renard Nybegynder
05. marts 2007 - 13:47 Der er 2 kommentarer og
1 løsning

Få data fra alle rows i en repeater ved klik på én knap

Hej, jeg har et problem med en repeater.

Problemet er at få .Text fra alle tekstbokse i repeateren med klik på én knap.

På hver row der laves med repeater'en, er der 5 tekstbokse.  Antallet af rows er varierende. Data fra tekstbokse på alle rows skal gemmes til en database med tryk på én knap. Hvis jeg placerer knappen i ItemTemplate i repeater'en og bruger FindControl, så kan jeg få data fra de 5 tekstbokse fra fx row 2 med tryk på knap fra row 2. Men jeg vil have .Text fra alle tekstbokse i alle rows med klik på én knap.

Lidt kode eksempler:
<ItemTemplate>
    <tr>
        <td align="right">
            <asp:TextBox ID="TextBox1" runat="server" Width="65" Text='<%#DataBinder.Eval(Container.DataItem, "data1_ppl")%>'></asp:TextBox>
            <br />
            <asp:Button ID="btn_next_Click" runat="server" OnClick="btn_next_Click" Text="Next" />
        </td>
    </tr>
</ItemTemplate>
I stedet for i hver row, så skal knappen placeres til sidst, fx i FooterTemplate.

Code behind:
Med FindControl på knappen click-event får jeg data fra den row knappen er i:
Button btn = sender as Button;
TextBox tb = btn.Parent.FindControl("TextBox1") as TextBox;

Med et loop kører jeg repeaterens rows igennem og  gemmer til DB:
for (int i = 1; i < number_controls; i++)
  {
    OleDbCommand cmd2 =
    new OleDbCommand("UPDATE tabel SET [data1_ppl]='" + TextBox1.Text + "' WHERE [id_ppl] = " + id + "", conn);  //her kun med 1 textbox
    cmd2.ExecuteNonQuery();
  }
Avatar billede Syska Mester
05. marts 2007 - 14:27 #1
Prøv noget ala:
        foreach (RepeaterItem ri in Repeater1.Items)
        {
            ri.FindControl("name");
        }

Da Footer ligger på selve formen ... derfor du kan finde den på din måde ...

men du skal kigge i det som den ligger i ItemTemplate ...

// ouT
Avatar billede renard Nybegynder
05. marts 2007 - 16:08 #2
Sweet - tak buzzzz, smid et svar.

foreach (RepeaterItem ri in Repeater1.Items)
{
  TextBox txt_id = ri.FindControl("txt_id") as TextBox;
}
Avatar billede Syska Mester
05. marts 2007 - 16:23 #3
svar :-)

glædeligt at kunne hjælpe ... det er lige meget at finde alle triks i asp.net ...

Sidder selv med et HttpModule som ikke vil virker i et subdir ... med mindre man laver det globalt for hele sitet ... gahhh

// ouT
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