Avatar billede torotune Nybegynder
18. april 2006 - 23:22 Der 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?

Mvh.
Avatar billede dr_chaos Nybegynder
19. april 2006 - 07:59 #1
du laver jo kun en select sætning i:
strSQL = "Select * From Table WHERE ID = " & ChkList.SelectedValue & ";"

ChkList.SelectedValue kan du sagtens bruge uden dit loop.
Avatar billede torotune Nybegynder
19. april 2006 - 18:05 #2
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.
Avatar billede torotune Nybegynder
19. april 2006 - 19:54 #3
Altså sådan at for hvert ID som ChkList.Checked repræsenterer, dannes der en row i GridWiew2 som henter en hel row ud fra databasen med valgte ID.
Avatar billede dr_chaos Nybegynder
19. april 2006 - 20:13 #4
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 ?
Avatar billede torotune Nybegynder
19. april 2006 - 20:25 #5
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.

Håber du kan følge mig :-)
Avatar billede dr_chaos Nybegynder
19. april 2006 - 20:28 #6
hvad er det præcise formål med checkboxlisten ?
Avatar billede torotune Nybegynder
19. april 2006 - 20:38 #7
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.
Avatar billede torotune Nybegynder
19. april 2006 - 20:42 #8
Altså sådan at:

Vis de mulige i en checkboxlist,
vis de valgte af de mulige i et GridView. + ekstra
Avatar billede dr_chaos Nybegynder
20. april 2006 - 08:20 #9
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 += ")"
Avatar billede torotune Nybegynder
20. april 2006 - 16:48 #10
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?
Avatar billede torotune Nybegynder
20. april 2006 - 17:28 #11
Det skal dog lige siges at dit eksempel fungerer glimrende :-) Dog skal man lige checke om listen er tom for valgte items, ellers kommer der en

"StartIndex cannot be less than zero. " nede hvor du piller det sidste komma fra.
Avatar billede dr_chaos Nybegynder
20. april 2006 - 19:21 #12
ja eller bare at man kan vælge en bruger i gridviewet og vises denne i detailsview.

Tillade mig lige at lægge et svar.
Avatar billede torotune Nybegynder
21. april 2006 - 16:02 #13
Ja det er fuldt ud fortjent :-)

Jeg takker for din store hjælp.
Avatar billede dr_chaos Nybegynder
21. april 2006 - 18:30 #14
np :)
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