hmmm.. har tänkt lite... ;)
Om jag namnger checkboxarna med samma namn. Skickas inte en kommaseparerad sträng då med id:na på alla de posterna som var ikryssade?
Mvh
Henrik
22 svar · 755 visningar · startad av devotion
Hej!
Jag har en lista befinner sig inom ett formulär. Lista är loopad från en databas.
Varje post börjar med:
<input type="checkTask<% = objRS("Id") %>" name="checkbox" value="<% = objRS("Id") %>" />
Id är uppdragets Id
Hur gör jag för att "fånga upp" att rutan är ikryssad när jag klickar på submit? Jag vill att id:na för de ikryssade uppdraget skall skickas vid submit
Submiten innebär tex att uppdraget skall raderas.
Mvh
henrik
hmmm.. har tänkt lite... ;)
Om jag namnger checkboxarna med samma namn. Skickas inte en kommaseparerad sträng då med id:na på alla de posterna som var ikryssade?
Mvh
Henrik
Loopa
Börja med att sätta Value="ON" till exempel
Sedan loopar du i svarskoden.
Skicka med ett hidden-fält med antalet checkboxar så kan du skriva:
for i=1 to cint(request("antalcheckbox"))
if request("checkTask"&cstr(i)) = "ON" Then
'kod för att radera uppdrag
end if
next
Hmm, förstår inte riktigt.
Måste inte value vara det unika uppdragsid´t?
Hur ska jag annars veta vilket som skall raderas?
Provade att göra så här
<input type="checkbox" name="checkTask<% =objRS("Id") %>" value="<% =server.htmlencode(objRS("Id")) %>" /><input name="cnt" type="hidden" value="<% =objRS("Id")%>" />
...
For each item in Request.Form("cnt")
response.write request.form("checkTask" & item)
Next
då fick jag ut alla id:na på de ikryssade checkboxarna
Är detta et sätt eller fins det bättre?
Mvh
henrik
det var inte att bra sätt överhuvudtaget... den loopar ju även ut de tomma checkboxarna utan värde :(
Mvh
henrik
devotion skrev:
hmmm.. har tänkt lite... ;)
Om jag namnger checkboxarna med samma namn. Skickas inte en kommaseparerad sträng då med id:na på alla de posterna som var ikryssade?
Mvh
Henrik
Det stämmer. För att se vilka som var ikryssade kan du exempelvis använda split(txt, ",").
Hej igen :)
Detta funkar:
For each item in Request.Form("cnt")
iTaskId = request.form("checkTask" & item)
If iTaskId <> "" then
sSQL = "DELETE FROM tblmaterial WHERE taskId = " & iTaskId
objConn.execute(sSQL),,128
End If
Next
men det känns lite knöligt... någon som vet bättre?
Mvh
henrik
Peter S skrev:
Det stämmer. För att se vilka som var ikryssade kan du exempelvis använda split(txt, ",").
Ok, men kan man använda sig av det när man ska ta bort poster ifrån databasen. Dvs, kan man kombinera split och loop? :OO
Mvh
henrik
döp checkboxarna till samma namn å loopa sen. :)
For i = 1 To uBound(Request.Form("checkTask"))
response.write request.form("checkTask")(i)
Next
Krypa till korset
Okej, jag erkänner - jag tänkte för snabbt och fel.
Hoppas tomten kommer med lite energi och kunskap till mitt nu rätt så tomma huvud. :x
doggelito skrev:
döp checkboxarna till samma namn å loopa sen. :)
For i = 1 To uBound(Request.Form("checkTask")) response.write request.form("checkTask")(i) Next
Det lät ju bra! :)
Men:
Request-objekt, ASP 0105 (0x80004005)
Ett matrisindex ligger utanför intervallet.
/uppdragNu/deleteTask.asp, line 19
Varför?
Senast redigerad av doggelito, i dag klockan 20:33. Anledning: kom på att du kan nog inte köra med for each då
hehe!
nu får jag dock följnade fel:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'uBound'
/uppdragNu/deleteTask.asp, line 18
Mvh
henrik
devotion skrev:
Ok, men kan man använda sig av det när man ska ta bort poster ifrån databasen. Dvs, kan man kombinera split och loop? :OO
Mvh
henrik
Du skulle ju kunna göra någonting liknande
delete
from tabell t
where t.id in (" & request.form("checkbox") & ")
...beroende på vad för typ av värde 'Id' är.
For i = 0 To uBound(Request.Form("checkTask"))-1
response.write request.form("checkTask")(i)
Next
Denkan skrev:
For i = 0 To uBound(Request.Form("checkTask"))-1 response.write request.form("checkTask")(i) Next
Det blir tyvärr inkompatibla typer på det med...
Mvh
henrik
Peter S skrev:
Du skulle ju kunna göra någonting liknande
delete from tabell t where t.id in (" & request.form("checkbox") & ")...beroende på vad för typ av värde 'Id' är.
Hmmm, det fungerade ju fint.. trodde inte man kunde använda "in" när man använder delete..
Finns det någon hake. Annars verkar det ju vara en lätt och fin lösning?
Koden ser nu ut så här:
<input type="checkbox" name="checkTask" value="<% =server.htmlencode(objRS("Id")) %>" />
...
sSQL = "DELETE FROM tblmaterial WHERE taskId in (" & request.form("checkTask") & ")"
Mvh
henrik
doggelito skrev:
Jag är lite ringrostig känner jag! :)
For i = 1 To Request.Form("checkTask").Count
:)
Det fungerade ju bättre!
For i = 1 To Request.Form("checkTask").Count
response.write request.form("checkTask")(i)
Next
Då är ju frågan vilket sätt jag ska använda?
Mvh
henrik
@nders skrev:
Hehe,
@nders the trådkiller kom in och dominerade.... Det är rätt svar menar du?
Mvh