Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Select boxar..

Postades av 2004-05-14 11:55:11 - John Andersson, i forum asp - allmänt, Tråden har 12 Kommentarer och lästs av 483 personer

Hej.
En bra lösning för att loopa flera selectboxar med samma information.
Tex. Orderrader till ett orderformulär.
Selectboxarna fyller information från en databas.
Har idag 1 st, men vill kunna ha upp till kanske 10 st!


Svara

Sv: Select boxar..

Postades av 2004-05-15 02:13:48 - Andreas Hillqvist

Jag förstår inte riktigt vad du menar. Men mitt upskick "Redigerar flera poster på en sida": Programarkivet:Redigerar flera poster på en sida kanske kan vara till hjälp.


Svara

Sv: Select boxar..

Postades av 2004-05-17 08:28:20 - John Andersson

Nej, inte riktigt så.
Jag har en dropdown meny som innehåller data från en databas, med artiklar.
Men om jag vill ha en till dropdown meny så vill jag ju inte öppna samma recordset igen.
Utan samma information från mitt recorset till flera dropdown menyer.


Svara

Sv: Select boxar..

Postades av 2004-05-17 09:12:56 - Anna-Karin Söderberg

Det är bara att använda dig av MoveFirst.
När du då ska skriva ut till nästa Selectbox så kör du RS.MoveFirst, loopar ut den.
Vill du skriva ut den igen så kör du bara MoveFirst och loopar igen.

//Anna-Karin


Svara

Sv: Select boxar..

Postades av 2004-05-17 11:00:03 - Ulf Elfving

Skulle nog hellre rekommendera att du använder <b>GetRows</b> på ditt rs, då får du all data i en array som du sedan kan fylla dina droplistor med


Svara

Sv: Select boxar..

Postades av 2004-05-17 11:21:43 - John Andersson

GetRows funka klockrent!
Tack


Svara

Sv: Select boxar..

Postades av 2004-05-17 12:31:08 - Göran Andersson

Du kan ju loopa igenom recordsetet och lägga valen i en sträng:

<code>strOptions = ""
Do until RS.EOF
strOptione = strOptions & "<option valye=""" & RS("Id") & """>" & Server.HTMLEncode(RS("Option")) & "</option>"
Loop</code>

Sedan är det bara att använda strängen:

<select name="Kossor"><%=strOptions%></select>


Svara

Sv: Select boxar..

Postades av 2004-05-17 23:41:14 - Andreas Hillqvist

Nu måste jag hindra dig. Strängkonkratenering är galenskap. Tänk att du för varjepost är vungen att adressera nytt minne för att variabeln är större än den gamla. Detta är ett ineffektivt sätt att göra det på.
Men jag håller med dig om att det är snyggt att ha listan i en variabel.

Låt os slå våra kloka huvud ihop.

Tyvärr går det inte i detta fallet att använda GetText() medlemmen på recordset. Då du kallar på HTMLEncode. HTMLEncode tycker jag är mycket bra att du använder. Det ger sidan kvalitet och säkerhet infogandet av script genom poster på sidan. Efterom HTML tagar formateras till ofarliga escape tecken.

En komplet optimerat exempel bör därför se ut så här:
<code>
Dim rs
Dim con

Dim fldKategorinr, fldKategorinamn

Dim strOptions
Dim strResult
Const adUseClient = 3

Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Program\Microsoft Office\Office10\Samples\Northwind.mdb"

strSQL = "SELECT Kategorier.Kategorinr, Kategorier.Kategorinamn" & vbCrLf & _
"FROM Kategorier" & vbCrLf & _
"ORDER BY Kategorier.Kategorinamn"

Set rs = CreateObject("ADODB.Recordset")
rs.CursorLocation = adUseClient
rs.Open strSQL, con

Set fldKategorinr = rs("Kategorinr")
Set fldKategorinamn = rs("Kategorinamn")

ReDim strOptions(1 To rs.RecordCount)
For Index = 1 To rs.RecordCount
strOptions(Index) = "<option valye=""" & fldKategorinr.Value & """>" '& Server.HTMLEncode(fldKategorinamn.Value) & "</option>"
rs.MoveNext
Next

strResult = Join(strOptions, vbCrLf)
Erase strOptions

Set fldKategorinr = Nothing
Set fldKategorinamn = Nothing

rs.Close
Set rs = Nothing

con.Close
Set con = Nothing


Respone.Write "<select name=""Kategori1"">" & strResult & "</select>"
Respone.Write "<select name=""Kategori2"">" & strResult & "</select>"
Respone.Write "<select name=""Kategori3"">" & strResult & "</select>"
</code>


Svara

Sv: Select boxar..

Postades av 2004-05-18 02:14:53 - Göran Andersson

Jag gjorde en liten prestandatest, och det jag fick fram var att break-even ligger någonstans omkring tusen poster. Ifall man har färre än så, så tar det längre tid att lägga in dem i en array, och det är ju inte så ofta man ens kommer i närheten av tusen val i en select-lista.

Ifall man nu riskerar att få en lista med så många poster så ska man naturligtvis använda en array.

Angående att allokera minne, så allokeras ju minne för varje sträng som läggs in i arrayen, så det blir ju lika många minnesallokeringar med bägge metoderna.


Svara

Sv: Select boxar..

Postades av 2004-05-18 11:55:04 - Jenz Ekedahl

Bara en fundering som tåls att kommenteras.

Är det helt fel att skriva en subrutin som skriver ut det hela? Skulle ju vara smidigt annars.
Men å andra sidan... Om det var en bra lösning skulle säkerligen någon ha föreslagit det tidigare. Så jag kan ju passa på att undra varför det inte är bra med en gång. ;-)

Mvh


Svara

Sv: Select boxar..

Postades av 2004-05-18 18:04:48 - Andreas Hillqvist

Nackdelen med en subrutin är att den kör koden för varje anrop. Om du använder en funktion och tillderar resultatet till en variabel får du ett anrop. Du kan ju oxå caha resultatet i funktionen efter första anropet.


Svara

Sv: Select boxar..

Postades av 2004-05-18 18:07:32 - Andreas Hillqvist

Det handlar ju om storleken på strängen i kombination med antalet. Jag vill bara uppmärksamma användarna på detta. Det man inte är medveten om kan skada en senare. ;o)

Små strängar är det ju lätt att hitta plats för och flytta data mellan. Men just för att man helatiden ökar strängen så måste den alokera om plats för den nya informationen.


Svara

Sv: Select boxar..

Postades av 2004-05-18 18:25:51 - Andreas Hillqvist

Har skrivit ett exempel som istället implementerar Stream. Tror det är effektivare i både mindre och större sammanang:
<code>
Function MakeOptions(Recordset, ValueField, TextField)
Dim Stream

Const adTypeText = 2
Const adModeReadWrite = 3

Set Stream = CreateObject("ADODB.Stream")

Stream.Type = adTypeText
Stream.Mode = adModeReadWrite
Stream.Open

Do Until Recordset.EOF
Stream.WriteText "<option value=""" & Server.HTMLEncode(ValueField.Value) & """>" & Server.HTMLEncode(TextField.Value) & "</option>"
Recordset.MoveNext
Loop

Stream.Position = 0
MakeOptions = Stream.ReadText

Stream.Close

End Function

Dim rs
Dim con

Dim strSQL
Dim strOptions

Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Program\Microsoft Office\Office10\Samples\Northwind.mdb"

strSQL = "SELECT Kategorier.Kategorinr, Kategorier.Kategorinamn" & vbCrLf & _
"FROM Kategorier" & vbCrLf & _
"ORDER BY Kategorier.Kategorinamn"

Set rs = CreateObject("ADODB.Recordset")
rs.Open strSQL, con

strOptions = MakeOptions(rs, rs("Kategorinr"), rs("Kategorinamn"))

rs.Close
Set rs = Nothing

con.Close
Set con = Nothing

Respone.Write "<select name=""Kategori1"">" & strOptions & "</select>"
Respone.Write "<select name=""Kategori2"">" & strOptions & "</select>"
Respone.Write "<select name=""Kategori3"">" & strOptions & "</select>"
</code>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 786
27 960
271 761
612
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies