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 :-)
Annonceindlæg fra Barco
Er jeres mødelokaler sikre nok?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
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
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."
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?
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
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#
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?
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.
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
27. februar 2005 - 19:50
#9
hvad siger den til det her: Lst.Items(Lst.Items.Count).Value = objDataReader("Bruger_id")
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") ?
27. februar 2005 - 20:06
#11
Lst.Items(Lst.Items.Count).Value = objDataReader("Bruger_id").ToString()
27. februar 2005 - 20:12
#12
Nope.. den melder samme fejl. Den sætter streg under (Lst.Items.Count)
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
27. februar 2005 - 20:22
#14
Det der kommer efter kommaet skal så være værdien
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
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 :-)
28. februar 2005 - 07:19
#17
Jeg må lige se hvordan din kode ser ud nu :o)
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
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 ?
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 :-)
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
28. februar 2005 - 22:01
#22
jeg var for sent ude... perfekt!
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" ?
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))
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)
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 :-)
02. marts 2005 - 01:35
#27
tak for det :o)
02. marts 2005 - 10:47
#28
Det var godt du fik det løst.
02. marts 2005 - 20:53
#29
Er 80/20 i orden? Ellers må i jo brokke jer :-)
03. marts 2005 - 09:14
#30
Jeg er ikke i bekneb for points, så fint med mig.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.