Avatar billede luke2009 Nybegynder
05. juli 2009 - 19:59 Der er 16 kommentarer og
1 løsning

Soter på kolonne

Jeg har fire kolonner med titel. Ved at klikke på titlen, sorteres udtrækket fra db enten desc eller asc. Det virker fint.
Som udgangspunkt sorteres asc på første kolonne.
Men klikkes der på en anden kolonne, sorteres den på desc. Det skulle jo gerne være sådan at første gang man klikker på en kolonne, så sorteres der efter asc.

Hvordan gøres dette?
Avatar billede keysersoze Guru
05. juli 2009 - 21:04 #1
jeg tror det kræver lidt kode for at se hvad du skal rette til.
Avatar billede luke2009 Nybegynder
05. juli 2009 - 21:11 #2
her er uddrag af koden:

order = request.QueryString("order")
kol = request.QueryString("kol")

if not request.querystring("abc") = "" then
abc = request.querystring("abc")
selectabc = " where navn like '" & abc & "%'"
else
selectabc = ""
end if

if not kol = "" then
strSQL = "select * from " & tabel & selectabc & " order by " & kol & " " & order & ";"
else
strSQL = "select * from " & tabel & selectabc & " order by navn asc"
end if

set anmeld_rec = objConn.execute(strSQL)
'response.Write anmeld_rec("navn")
'response.end
if order = "" or order = "asc" then
order = "desc"
else
order = "asc"
end if



for m = 0 to col
  response.Write("<td width='17%' valign='top' class='h3-seo-bold'><a href='anmeld.asp?anmeld=" & valg & "&" & tilstand & "abc=" & abc & "&kol=" & kolnavn(m) & "&order=" & order & "'>" & viskolnavn(m) & "</a></td>")
next
Avatar billede softspot Forsker
05. juli 2009 - 21:43 #3
Umiddelbart ville jeg jo undlade at sende order med ned og blot sørge for at tjekke om kol er den samme som sidst. Hvis den ikke er det, skal der sorteres asc, ellers desc...
Avatar billede luke2009 Nybegynder
05. juli 2009 - 22:12 #4
tjo men hvordan "huskes" hvad den var sidst? om det er den samme eller en ny?
Avatar billede softspot Forsker
05. juli 2009 - 22:28 #5
Ja, jeg sad lige og overvejede det samme og du er nok ikke interesseret i at fyre op under session (med mindre den allerede er fyret op :-))...

Du kunne sende den aktuelle kolonne med til udtrækket, så du dermed kan bestemme om der skal sorteres stigende eller faldende. Jeg kunne forestille mig noget i stil med:

aktkol = request.QueryString("aktkol")
kol = request.QueryString("kol")

if not request.querystring("abc") = "" then
  abc = request.querystring("abc")
  selectabc = " where navn like '" & abc & "%'"
else
  selectabc = ""
end if

if kol = "" then
  kol = navn
end if

if kol <> aktkol then
  order = "asc"
else
  order = "desc"
end if

strSQL = "select * from " & tabel & _
    selectabc & " order by " & kol & " " & order & ";"

set anmeld_rec = objConn.execute(strSQL)

for m = 0 to col
  response.Write("<td width='17%' valign='top' class='h3-seo-bold'><a href='anmeld.asp?anmeld=" & valg & "&" & tilstand & "abc=" & abc & "&kol=" & kolnavn(m) & "&aktkol=" & kol & "'>" & viskolnavn(m) & "</a></td>")
next

Jeg har omformuleret din kode lidt, men i bund og grund burde den gøre det samme...
Avatar billede softspot Forsker
05. juli 2009 - 22:39 #6
UPS! Der sneg sig lige en ligge fejl ind i denne passage:

if kol = "" then
  kol = navn
end if

Det skal naturligvis være:

if kol = "" then
  kol = "navn"
end if
Avatar billede luke2009 Nybegynder
06. juli 2009 - 00:41 #7
Desværre. Den lader ikke til at være bedre end den jeg selv havde. Hvis fx. aktkol og kol er identiske, bliver den ved med at sorterer desc.
Avatar billede softspot Forsker
06. juli 2009 - 05:36 #8
Nå, men så slipper du nok ikke helt for order-parameteren :-)

Order er så kun interessant i det tilfælde at sorteringskolonnen er den samme som sidste gang...

Jeg forestiller mig noget i stil med:

order = request.QueryString("order") & ""
aktkol = request.QueryString("aktkol") & ""
kol = request.QueryString("kol") & ""

if not request.querystring("abc") = "" then
  abc = request.querystring("abc")
  selectabc = " where navn like '" & abc & "%'"
else
  selectabc = ""
end if

if kol = "" then
  kol = "navn"
end if

if kol <> aktkol then
  order = "asc"
else
  if order = "" or order = "desc" then
    order = "asc"
  else
    order = "desc"
  end if
end if

strSQL = "select * from " & tabel & _
    selectabc & " order by " & kol & " " & order & ";"

set anmeld_rec = objConn.execute(strSQL)

for m = 0 to col
  response.Write("<td width='17%' valign='top' class='h3-seo-bold'><a href='anmeld.asp?anmeld=" & valg & "&" & tilstand & "abc=" & abc & "&kol=" & kolnavn(m) & "&aktkol=" & kol & "&order=" & order &"'>" & viskolnavn(m) & "</a></td>")
next
Avatar billede luke2009 Nybegynder
06. juli 2009 - 15:05 #9
Har afprøvet det, og det virker stadig ikke efter hensigten.
Avatar billede softspot Forsker
06. juli 2009 - 17:05 #10
Kan du evt. løfte sløret for hvad der sker...?
Avatar billede keysersoze Guru
06. juli 2009 - 17:12 #11
prøv med dette

order = request.QueryString("order")
kol = request.QueryString("kol")

If Not request.querystring("abc") = "" Then
  abc = request.querystring("abc")
  selectabc = " where navn like '" & abc & "%'"
Else
  selectabc = ""
End If

If Not kol = "" Then
  strSQL = "select * from " & tabel & selectabc & " order by " & kol & " " & order & ";"
Else
  strSQL = "select * from " & tabel & selectabc & " order by navn asc"
End If

set anmeld_rec = objConn.execute(strSQL)

For m = 0 To col
  order = "asc"

  If col = kolnavn(m) And order = "asc" then
    order = "desc"
  End If

  Response.Write("<td width='17%' valign='top' class='h3-seo-bold'><a href='anmeld.asp?anmeld=" & valg & "&" & tilstand & "abc=" & abc & "&kol=" & kolnavn(m) & "&order=" & order & "'>" & viskolnavn(m) & "</a></td>")
Next

--------------------

softspot >> hvad er BB-code for at pakke kode ind i det blå felt?
Avatar billede softspot Forsker
06. juli 2009 - 17:30 #12
keysersoze >> div i kantede paranteser (jeg kan ikke lige finde ud af hvordan jeg skal vise det, men jeg tror du forstår :))...
Avatar billede luke2009 Nybegynder
06. juli 2009 - 19:18 #13
softspot: Det er samme problem som sidst.
Avatar billede keysersoze Guru
06. juli 2009 - 19:24 #14
sry - lille fejl, det skal hedde

If kol = kolnavn(m) And order = "asc" then
Avatar billede luke2009 Nybegynder
03. august 2009 - 11:44 #15
Tak for hjælpen. Jeg er tilfreds med som det er nu. Læg gerne et svar.
Avatar billede keysersoze Guru
03. august 2009 - 18:49 #16
svar (hvis mine kommentarer har været med til løsningen).
Avatar billede keysersoze Guru
18. september 2009 - 22:45 #17
lukketid?
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
Kurser inden for grundlæggende programmering

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