20. oktober 2004 - 17:31Der 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.
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
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 } }
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> </td> <td align="right"><%# DataBinder.Eval(Container.DataItem, "Price") %> DKK / Måned</td> </tr>
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
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)
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?
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>".
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.