Avatar billede nannami Nybegynder
27. februar 2005 - 17:57 Der er 27 kommentarer og
3 løsninger

Fylde listbox mere flere poster

Hej. Hvordan kan jeg indsætte både fornavn ind efter hinanden i min listbox?
Jeg har prøvet med nedenstående eksempel, men den fylder op således:

Eks.:

Peter
Hansen
Niels
Henningsen

Det skulle gerne se sådan ud:

Eks.:

Peter Hansen
Niels Henningsen

Dim liste as New ArrayList()
         
            Sub Fyldboks()
             
                strSQL = "SELECT DISTINCT Fornavn, Efternavn FROM Info;"

                objComm = New OleDbCommand(strSQL, objConn)
                objDataReader = objComm.ExecuteReader()

                Do While objDataReader.Read = true
                    liste.add(objDataReader("Fornavn"))
                    liste.add(objDataReader("Efternavn"))
                Loop

                Lst.DataSource = liste
                Lst.DataBind()

                objDataReader.Close()
          End Sub

:-)
Avatar billede bongo20 Nybegynder
27. februar 2005 - 18:00 #1
Har du prøvet:

Dim liste as New ArrayList()
         
            Sub Fyldboks()
             
                strSQL = "SELECT DISTINCT Fornavn, Efternavn FROM Info;"

                objComm = New OleDbCommand(strSQL, objConn)
                objDataReader = objComm.ExecuteReader()

                Do While objDataReader.Read = true
                    liste.add(objDataReader("Fornavn") + " " + objDataReader("Efternavn"))
            Loop

                Lst.DataSource = liste
                Lst.DataBind()

                objDataReader.Close()
          End Sub
Avatar billede nannami Nybegynder
27. februar 2005 - 18:07 #2
jo, det ser umiddelbart ud som en løsning, men her kommer den med en "End of statement expected."
Avatar billede nannami Nybegynder
27. februar 2005 - 18:28 #3
Nej, der må du undskylde, jeg havde lavet en trykfejl! :-)

Hvordan kommer det ellers til at virke, når jeg så skal bruge det i sammenhæng med min DB og lst.SelectedItem.Value? For hvis value bliver = eks. "Peter Hansen", kan jeg vel ikke bruge det den anden vej, når posterne er delt op i Fornavn og Efternavn?
Avatar billede bongo20 Nybegynder
27. februar 2005 - 18:38 #4
Du kan give elementet en værdi.
Du har måske et Id i din tabel i DB, tag den med ud og giv elemntet den som value.

Sådan her:

iste.Items[iste.Items.Count - 1].Value = objDataReader.GetInt32(0).ToString();

Bare skriv hvis du ikke er med
Avatar billede bongo20 Nybegynder
27. februar 2005 - 19:02 #5
Du kan jo også bare give dit element fornavn som value

iste.Items[iste.Items.Count - 1].Value = objDataReader("Fornavn")

Det er muligt der skal laves om i paranteserne, jeg har det fra C#
Avatar billede nannami Nybegynder
27. februar 2005 - 19:10 #6
Okay, jeg er ikke helt med endnu :-)

Lst.Items(Lst.Items.Count - 1).Value = objDataReader("Fornavn")

- Vil det så sige at det jeg vælger fra min lst får tildelt værdien fornavn, og så faktisk har sin oprindelige værdi igen?
Avatar billede bongo20 Nybegynder
27. februar 2005 - 19:24 #7
ja det har den, men det er ikke særlig hensigtmæssigt, idet du kun vil kunne have en Søren og én Hans osv osv.

Det er meget bedre at give dem det Id på den række du har i tabellen.

Select Id, Fornavn, Efternavn From Info

OG så give dit element Id som værdi.
Avatar billede nannami Nybegynder
27. februar 2005 - 19:44 #8
Okay, jeg har prøvet med dette, da jeg har en kollonne med unikke bruger_ID:

strSQL = "SELECT DISTINCT Bruger_Id, Fornavn, Efternavn FROM Info;"

Lst.Items(Lst.Items.Count - 1).Value = objDataReader("Bruger_id")

Men jeg får fejlen: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
Avatar billede bongo20 Nybegynder
27. februar 2005 - 19:50 #9
hvad siger den til det her:

Lst.Items(Lst.Items.Count).Value = objDataReader("Bruger_id")
Avatar billede nannami Nybegynder
27. februar 2005 - 19:55 #10
Jeg får en

"Value of type 'System.Web.UI.WebControls.ListItemCollection' cannot be converted to 'Integer'."

Mit bruger_id består af tal, kan jeg lave det om i

Lst.Items(Lst.Items.Count).Value = objDataReader("Bruger_id") ?
Avatar billede bongo20 Nybegynder
27. februar 2005 - 20:06 #11
Lst.Items(Lst.Items.Count).Value = objDataReader("Bruger_id").ToString()
Avatar billede nannami Nybegynder
27. februar 2005 - 20:12 #12
Nope.. den melder samme fejl. Den sætter streg under (Lst.Items.Count)
Avatar billede bongo20 Nybegynder
27. februar 2005 - 20:22 #13
sådan her så måske:

Do While objDataReader.Read = true
                    liste.add(objDataReader("Fornavn") + " " + objDataReader("Efternavn"), objDataReader("Bruger_id").ToString())
            Loop
Avatar billede bongo20 Nybegynder
27. februar 2005 - 20:22 #14
Det der kommer efter kommaet skal så være værdien
Avatar billede bongo20 Nybegynder
27. februar 2005 - 20:24 #15
nej det er fordi vi har glemt det her:

liste.Add(new ListItem(objDataReader("Fornavn") + " " + objDataReader("Efternavn"), objDataReader("Bruger_id").ToString())


Det er "new ListItem" der skal bruges når du vil have en anden værdi end teksten
Avatar billede nannami Nybegynder
27. februar 2005 - 20:54 #16
Okay! Sorry, nu blev jeg lidt forvirret :-)

Jeg har fjernet

Lst.Items(Lst.Items.Count).Value = objDataReader("Bruger_id").ToString()

Og prøver med det sidste der, men hvis jeg laver en response.write(Lst.SelectedItem.Value) - udskriver den eks. "Peter Hansen" Burde den ikke udskrive Bruger_ID'et?

Jeg skal nok smide nogle ekstra points oveni hatten :-)
Avatar billede bongo20 Nybegynder
28. februar 2005 - 07:19 #17
Jeg må lige se hvordan din kode ser ud nu :o)
Avatar billede nannami Nybegynder
28. februar 2005 - 12:47 #18
Hej igen! :-) Det er lige taget ud af en større sammenhæng, men jeg har pillet det her ud, og så tjekker jeg bare neders hvilken værdi SelectedItem.value har. Ind til videre udskriver den både for navn og efternavn.. 


Sub Fyld_Listboks             

Dim liste as New ArrayList()

                strSQL = "SELECT DISTINCT Bruger_ID, Fornavn, Efternavn FROM Info;"

                'Lst.Items(Lst.Items).Value = objDataReader("Bruger_id").ToString()

                objComm = New OleDbCommand(strSQL, objConn)
                objDataReader = objComm.ExecuteReader()

                Do While objDataReader.Read = true
                    Lst.Add(new ListItem(objDataReader("Fornavn") + " " + objDataReader("Efternavn"), objDataReader("Bruger_id").ToString()))
                    'Lst.Add(objDataReader("Fornavn") + " " + objDataReader("Efternavn"))
                Loop

                Lst.DataSource = Liste
                Lst.DataBind()

                objDataReader.Close()
          End Sub

              'Tjekker her hvad der bliver skrevet ud

          Sub AddBtn_Click(Sender As Object, E As EventArgs)

              response.write(Lst.SelectedItem.Value)
Exit Sub
Avatar billede nannami Nybegynder
28. februar 2005 - 21:29 #19
Men er det ikke fordi at vi her Add'er til Array-listen "liste":

liste.Add(new ListItem(objDataReader("Fornavn") + " " + objDataReader("Efternavn"), objDataReader("Bruger_id").ToString())

og så til sidst sætte Lstboksen "Lst" til

Lst.DataSource = Liste

?
Avatar billede nannami Nybegynder
28. februar 2005 - 21:35 #20
For nu tror jeg at jeg har det til at virke, bare med med

Sub Fyld_Listboks()             

                strSQL = "SELECT DISTINCT Bruger_Id, Fornavn, Efternavn FROM Info;"

                objComm = New OleDbCommand(strSQL, objConn)
                objDataReader = objComm.ExecuteReader()

                Do While objDataReader.Read = true

                    Lst.Items.Add(new ListItem(objDataReader("Fornavn") + " " + objDataReader("Efternavn"), objDataReader("Bruger_id")))
             
                Loop

                objDataReader.Close()
  End Sub

Så bliver array-listen "liste" slet ikke anvendt :-)
Avatar billede ronja7 Nybegynder
28. februar 2005 - 22:00 #21
Jo, du er inde på det rigtige. Spring ArrayListen helt over, og nøjes med at tilføje ListItems direkte til listboxens ItemCollection.

Fremgangsmåden med at angive DataSource og derefter DataBinde vil ikke kunne finde ud af at det er ListItems der er i ArrayListen.

Sub Fyld_Listboks
                strSQL = "SELECT DISTINCT Bruger_ID, Fornavn, Efternavn FROM Info;"

                objComm = New OleDbCommand(strSQL, objConn)
                objDataReader = objComm.ExecuteReader()

                Lst.Items.Clear()
                Do While objDataReader.Read = true
                    Lst.Add(new ListItem(objDataReader("Fornavn") + " " + objDataReader("Efternavn"), objDataReader("Bruger_id").ToString()))
                Loop
               
                objDataReader.Close()
          End Sub
Avatar billede ronja7 Nybegynder
28. februar 2005 - 22:01 #22
jeg var for sent ude... perfekt!
Avatar billede nannami Nybegynder
28. februar 2005 - 22:21 #23
Okay ja :-) Men ellers tak for det. Men hvordan kalder jeg så

(objDataReader("Fornavn") + " " + objDataReader("Efternavn"), objDataReader("Bruger_id")

Hvis jeg nu skal overføre det til en anden lstBox? Sådan at det jeg ser i den nye listbox er "Fornavn Efternavn" men værdien er stadig "Bruger_ID" ?
Avatar billede ronja7 Nybegynder
28. februar 2005 - 22:52 #24
Du kan overføre ListItems sådan her:

ListItem item = Lst.SelectedItem
Lst2.Items.Add(item)

Eller:
Lst2.Items.Add(new ListItem(Lst.SelectedItem.Text,Lst.SelectedValue))
Avatar billede bongo20 Nybegynder
01. marts 2005 - 12:33 #25
Jeg har været lidt væk, men jeg kan se du har fået løst det meste :o)
Avatar billede nannami Nybegynder
01. marts 2005 - 23:34 #26
Jep, I skal have mange tak begge to! Jeg fik løst det sidste med

Lst2.Items.Add(new ListItem(Lst.SelectedItem.Text,Lst.SelectedItem.Value))

Smid svar, så skal jeg prøve at fordele points'ne :-)
Avatar billede bongo20 Nybegynder
02. marts 2005 - 01:35 #27
tak for det :o)
Avatar billede ronja7 Nybegynder
02. marts 2005 - 10:47 #28
Det var godt du fik det løst.
Avatar billede nannami Nybegynder
02. marts 2005 - 20:53 #29
Er 80/20 i orden? Ellers må i jo brokke jer :-)
Avatar billede ronja7 Nybegynder
03. marts 2005 - 09:14 #30
Jeg er ikke i bekneb for points, så fint med mig.
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