18. april 2006 - 23:22Der er
13 kommentarer og 1 løsning
Dataset udfra CheckBoxList
Hejsa,
Jeg prøver at danne et dataset ud fra nogle records der afhænger af nogle valgte items i en checkboxlist. Derefter vil jeg binde datasettet til et GridView.
Jeg prøver med:
Public Sub FyldGridView2()
Dim strItems As String = Nothing Dim li As ListItem
For Each li In ChkList.Items
If li.Selected = True Then
strSQL = "Select * From Table WHERE ID = " & ChkList.SelectedValue & ";"
End If Next
Dim ds As DataSet = GetData(strSQL)
GridView2.DataSource = ds GridView2.DataBind()
End Sub
Function GetData(ByVal queryString As String) As DataSet
Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
Dim ds As New DataSet()
Dim connection As New OleDbConnection(connectionString) Dim adapter As New OleDbDataAdapter(queryString, connection) adapter.Fill(ds)
Return ds
End Function
GridView2 bliver også dannet, men det bliver kun med én record, nemlig den ud fra det første checked item i min ChkList. Loopet fungerer ikke helt. Hvordan kan jeg få sparket måske en ArrayList ind så mine loops opsamles og derefter smides ind i datasettet - eller noget i den stil?
Hej - du har ret, det fungerer uden loop'en, men der dannes kun én record i mit GridView ud fra det første afkrydsningsfelt i chklist. Den skulle gerne tage de næste med hvis flere er checked.
hmm der er forskellige måder at gøre det på. Jeg forstå godt hvad det er du forsøger men kan ikke lade være med at tænke på at der må være en anden måde. Kan du ikke give en præcis beskrivelse af hvad formålet er ?
Jo. Jeg tror nemlig også at den måde jeg har tænkt mig at gøre det på er lidt mere besværlig i forhold til hvordan den kan løses.
Jeg har en CheckBoxList og et GridView.
Hvis checkboxlist er fyldt med navne på Brugere, hvor TextField = BrugerNavn og ValueField = BrugerID
Herunder har jeg så et GridView.
Jeg vil så gerne have at efter et postback eller efter man trykker på en knap, så vises en række i GridView'et for hver bruger valgt i CheckBoxListen. (BrugerID er så nøglen)
En udmiddelbar løsning kunne være at bruge et DetailsView, men det er fordi jeg fra mit GridView skal kunne tilføje yderligere specifikationer for hver valgt bruger.
Det er først og fremmest kun at udvælge hvilke brugere jeg har med at gøre.
Jeg har tænkt mig i en WizardControl's step1 at få vist brugerne checkboxlist'en, hvorefter, i step2, optræder kun de valgte i GridView'et hvor det er muligt at vælge specifikationer for hver af dem.
Det lyder godt nok som en besværgelig løsning. Men den simple måde er at lave din sqlsætning på denne måde: strSQL = "Select * From Table WHERE ID in (" For Each li In ChkList.Items
If li.Selected = True Then
strSQL +="" & li.Value &"," End If Next 'fjern sidste komma strSQL = strSQL.Remove(strSQL.LastIndexOf(","C)) 'afslut med ) strSQL += ")"
Ja okay, det er måske mere besværligt end tilladt :-) Jeg vil lige prøve dit forslag, men hvad ville dit på et bedre alternativ være? - Måske noget med at liste brugere i et GridView med en checkboxcolumn og så lade de valgte figurere videre i et detailsview?
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.