Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ASP.Net] Krijg geen postback

Pagina: 1
Acties:

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 29-11 10:10
We hebben een component dat ontzettend ranzig geschreven is (een mix van oldskool ASP en .Net) en de inhoud van een winkelwagentje toont (winkelwagentje inhoud staat in een sessie).

En nu wil ik daar een delete knopje aan toe voegen, dat moet een postback triggeren en in de codebehind wordt de sessie aangepast.

Ik zou het als zo doen, maar dat werkt dus niet.

code:
1
2
3
4
5
<% for each artikel in winkelwagentje %>
<td><%=artikel.naam%></td>
<td><%=artikel.prijs%></td>
[b]<td><asp:LinkButton id="LinkButton1" commandName="GooiWeg" CommandArgument="<%#artikel.ID%>" text="Gooi weg" /></td>[/b]
<% next %>


Dan maar een linkbutton buiten de lus gezet, en dan dit gedaan

code:
1
 <div onclick="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl00$LinkButton1', '<%=artikel.ID%>')">Gooi weg</div>


Maar er wordt geen postback getriggerd, ook niet als ik artikel.id weglaat of de naam van de linkbutton erin plaats met Linkbutton1.ClientID.

Ik heb geen zin om het component te herschrijven vanavond, dus iemand die een idee heeft? (Mag ranzig, dit component gaat zeer binnenkort op de schop maar dit is een 'sproetje').

Het component draait is een webusercontrol, mogelijk heeft dat er iets mee te maken?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 00:01

TeeDee

CQB 241

Heb je dat toevallig ook in een repeater, datagrid of wat dan ook staan? Zo ja, dan zal je het via RepeaterItemCommand/OnItemCommand etc. oid moeten doen.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 29-11 10:10
TeeDee schreef op woensdag 12 december 2007 @ 21:19:
Heb je dat toevallig ook in een repeater, datagrid of wat dan ook staan? Zo ja, dan zal je het via RepeaterItemCommand/OnItemCommand etc. oid moeten doen.
Nee, daar gaathet juist om, in een repeater dit aan de praat krijgen kan zoals in codevoorbeeld 1. Het renderen wordt echter gedaan op een oldskool asp manier

code:
1
for each item as string in session("Cart").toString.Split(";")

  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Volgens mij ben je deze vergeten:
code:
1
runat="server"


Wat is je motivatie erachter om het in de "oldschool asp style" te doen ipv met een Repeater oid, zoals het bedoeld is ?

[ Voor 48% gewijzigd door Gurbe de n00b op 12-12-2007 21:26 ]

Portfolio


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 00:01

TeeDee

CQB 241

Misschien OnClientClick, betreffende ClientID doorgeven en dan misschien gebruik maken van de querystring en een redirect terug naar dezelfde pagina?
Gurbe de n00b schreef op woensdag 12 december 2007 @ 21:25:
Volgens mij ben je deze vergeten:
code:
1
runat="server"
Had ik nog niet eens gezien, maar goed: daar zal je normaal gesproken een dikke error op krijgen afaik.

[ Voor 49% gewijzigd door TeeDee op 12-12-2007 21:27 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 29-11 10:10
Gurbe de n00b schreef op woensdag 12 december 2007 @ 21:25:
Volgens mij ben je deze vergeten:
code:
1
runat="server"
Nee, codevoorbeeldje was even getypt, runat staat er gewoon in.

Ik zie em ook gewoon een postback geven, maar er wordt niets getriggerd

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 00:01

TeeDee

CQB 241

creator1988 schreef op woensdag 12 december 2007 @ 21:26:
[...]


Nee, codevoorbeeldje was even getypt, runat staat er gewoon in.

Ik zie em ook gewoon een postback geven, maar er wordt niets getriggerd
En gebruik maken van een debugger / tracer wat dan ook?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 29-11 10:10
TeeDee schreef op woensdag 12 december 2007 @ 21:26:
Misschien OnClientClick, betreffende ClientID doorgeven en dan misschien gebruik maken van de querystring en een redirect terug naar dezelfde pagina?
nadeel is dat de klant eventuele andere informatie op de pagina kwijt is als hij daarop klikt, maar is wel een workaround.

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 29-11 10:10
TeeDee schreef op woensdag 12 december 2007 @ 21:27:
[...]

En gebruik maken van een debugger / tracer wat dan ook?
Ik heb overal debuggingpoints neergezet maar de applicatie reacht ze nooit. Ik kan gewoon niet achterhalen wat hij uitvoert.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 29-11 11:29

gorgi_19

Kruimeltjes zijn weer op :9

Ik vraag me af of je niet compleet je controlcollection overhoop gooit, daardoor de viewstate vernaggelt waardoor er geen eventhandler meer aan je button gekoppeld kan worden.

Samengevat: Ik vraag me af of je dit uberhaupt op deze manier aan de praat krijgt; of maak een repeater er van of vergeet een postback en doe het oldskool ASP.Net manier met een request.form.

[ Voor 35% gewijzigd door gorgi_19 op 12-12-2007 21:41 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 29-11 10:10
gorgi_19 schreef op woensdag 12 december 2007 @ 21:41:
Ik vraag me af of je niet compleet je controlcollection overhoop gooit, daardoor de viewstate vernaggelt waardoor er geen eventhandler meer aan je button gekoppeld kan worden.

Samengevat: Ik vraag me af of je dit uberhaupt op deze manier aan de praat krijgt; of maak een repeater er van of vergeet een postback en doe het oldskool ASP.Net manier met een request.form.
Request.Form, hmm. Ja daar zit wat in, in combinatie met een stukje javascript. Danke, ga het even proberen :9

(Heeft nu alweer een godsgruwelijke hekel aan oldskool ASP)


//EDIT:

HURRA IT's WORKING

En het is zoo ranzig ;)

Hier uiteindelijk de oplossing:

in de masterpage, direct onder <form runat='server'>
code:
1
2
<input type="hidden" runat="server" id="action" value="none" />
<input type="hidden" runat="server" id="active" value="0" />


vervolgens in de for-each-lus
code:
1
2
3
<img onclick="document.getElementById('ctl00$action').value='plus'; document.getElementById('ctl00$active').value='<%=product_id %>'; __doPostBack('', '');" src="app_images/plus(1).jpg" />
                    <img onclick="document.getElementById('ctl00$action').value='min'; document.getElementById('ctl00$active').value='<%=product_id %>'; __doPostBack('', '');" src="app_images/min(1).jpg" />
                    <img onclick="document.getElementById('ctl00$action').value='delete'; document.getElementById('ctl00$active').value='<%=product_id %>'; __doPostBack('', '');" src="app_images/recycle_bin.jpg" />


En vervolgens in de page_load van de control
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        Dim product As String = "0"
        Dim actie As String = ""

        For Each a As String In Request.Form
            If a.Contains("active") Then
                product = (Request.Form(a))
            ElseIf a.Contains("action") Then
                actie = Request.Form(a)
            End If
        Next

        If Not product = "0" Then
            'doe er wat leuks mee
        End If


:>

[ Voor 51% gewijzigd door creator1988 op 12-12-2007 22:19 ]

Pagina: 1