Avatar billede sylvesternielsen Nybegynder
20. oktober 2004 - 17:31 Der er 10 kommentarer og
1 løsning

Repeater med checkboxe, hvordan henter jeg resultaterne?

Jeg har en side hvor jeg tilføjer nogle produkter.

Jeg har her en liste af moduler til produktet som jeg gerne vil have man kan vælge.

Modulerne er listet i en repeater. Når jeg trykker på gem vil jeg have min kode til at finde alle de checkboxes som er markeret samt returnere den id fra repeateren som den ligger i.

Min repeater ser sådan ud:
<asp:repeater id="Modules" runat="server">
<HeaderTemplate>
<table width="100%"  border="0" cellspacing="0" cellpadding="2" class="Normal">
    <tr>
        <td></td>
        <td><strong>Modul</strong></td>
        <td><strong>Description</strong></td>
        <td><strong>Price</strong></td>
    </tr>
</HeaderTemplate>
<ItemTemplate>
    <tr>
        <td><asp:CheckBox id="Mod" runat="server" /></td>
        <td><%# DataBinder.Eval(Container.DataItem, "Name") %></td>
        <td>&nbsp;</td>
        <td align="right"><%# DataBinder.Eval(Container.DataItem, "Price") %> DKK / Måned</td>
    </tr>
</ItemTemplate>
<FooterTemplate>
    </table>
</FooterTemplate>
</asp:repeater>

Og min code behind:
    Sub ModuleList()
        Dim DS As DataSet
        Dim MyConnection As SqlConnection
        Dim MyCommand As SqlDataAdapter

        MyConnection = New SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("PubsString"))
        MyCommand = New SqlDataAdapter("select * from Modules Where Active = 1", MyConnection)

        DS = New DataSet
        MyCommand.Fill(DS, "Authors")
        Modules.DataSource = DS.Tables("Authors").DefaultView
        Modules.DataBind()
    End Sub
Avatar billede jepsen999 Nybegynder
20. oktober 2004 - 17:44 #1
Noget ala:

ArrayList selectedIds = new ArrayList();
foreach (RepeaterItem item in Modules){
  CheckBox cb = (CheckBox)item.FindControl("Mod");
  if (cb.Checked){
  Label id = item.FindControl("checkBoxId");
  selectedIds.Add(id);
  // gem id i din arraylist
  }
}
Avatar billede jepsen999 Nybegynder
20. oktober 2004 - 17:46 #2
Du skal indsætte en label med visible="hidden" så du kan aflæse de id'er der er selected.
    <tr>
        <td><asp:CheckBox id="Mod" runat="server" />
        <asp:Label id="checkBoxId" visible="false" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "IdPåDitObjekt") %>' />
    </td>
        <td><%# DataBinder.Eval(Container.DataItem, "Name") %></td>
        <td>&nbsp;</td>
        <td align="right"><%# DataBinder.Eval(Container.DataItem, "Price") %> DKK / Måned</td>
    </tr>
Avatar billede jepsen999 Nybegynder
20. oktober 2004 - 17:46 #3
Hov, ikke visible="hidden" med "false" som der står i koden
Avatar billede jepsen999 Nybegynder
20. oktober 2004 - 17:53 #4
og i vb er det :
Dim selectedIds As ArrayList = New ArrayList ()
For Each item As RepeaterItem In Modules
Dim cb As CheckBox = CType(item.FindControl("Mod"), CheckBox)
If cb.Checked Then
  Dim id As Label = item.FindControl("checkBoxId")
  selectedIds.Add(id)
End If
Next
Avatar billede jepsen999 Nybegynder
20. oktober 2004 - 17:56 #5
Argh, lidt for hurtig der

Dim selectedIds As ArrayList =  New ArrayList()
Dim item As RepeaterItem
For Each item In Modules
  Dim cb As CheckBox = CType(item.FindControl("Mod"), CheckBox)
  if (cb.Checked)
  {
  Dim id As Label
  id =  CType(item.FindControl("checkBoxId"), Label)
  ' gem id i din arraylist
  selectedIds.Add(id.Text)

  }
Next
Avatar billede sylvesternielsen Nybegynder
20. oktober 2004 - 18:25 #6
Det må være:
For Each item In Modules
            Dim cb As CheckBox = CType(item.FindControl("Mod"), CheckBox)
            If (cb.Checked) Then
                Dim id As Label
                id = CType(item.FindControl("checkBoxId"), Label)
                ' gem id i din arraylist
                selectedIds.Add(id.Text)
            End If
        Next

Men den siger at Modules ikke er en collection. Hvad gør jeg her?
Avatar billede jepsen999 Nybegynder
20. oktober 2004 - 19:05 #7
ok det er "Modules.Items"
Avatar billede jepsen999 Nybegynder
20. oktober 2004 - 19:07 #8
ja, jeg fik vist blandet lidt c# og vb samme der ;)
Avatar billede sylvesternielsen Nybegynder
20. oktober 2004 - 19:37 #9
Det fungere jo helt perfekt. *S*

Kan du lige på falderebet fortælle mig hvordan jeg henter id'en på den sidste række jeg indsatte i databasen?
Avatar billede jepsen999 Nybegynder
20. oktober 2004 - 19:42 #10
Hmm, der er jeg ikke helt sikker. Jeg er begyndt at bruge Guid'er til id i databasen, så jeg kender id'et før den bliver sat ind.
Men det er vist noget med "Select @@identity from <table>".
Avatar billede sylvesternielsen Nybegynder
20. oktober 2004 - 19:43 #11
Tak.. Endnu en gang. *S*
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