Even een korte situatie-schets:
Ik ben bezig aan een webform om in een tabel ingevulde en niet ingevulde taken weer te geven voor een dag.
Ik heb eerst geprobeerd rechtstreeks rijen en cellen aan te maken in de tabel, maar wanneer ik dan van dag wisselde (en die dingen opnieuw moeten worden opgebouwd) bleven soms oude waarde's staan. Rows.clear() en dergelijken hielpen niet.
Nu heb ik daarvoor de oplossing gevonden.
Ik maak een ArrayList aan die evenveel rijen bevat als de table (einduur - beginuur, 1 rij per kwartier).
Aan die ArrayList voeg ik dan rijen toe.
Deze rijen bevatten cellen, die, bij de eerste cell van een periode, ook een LinkButton krijgen met daaronder een Label met de omschrijving van de taak.
Dit alles gaat goed. De linkbuttons en cellen worden automatisch aangemaakt en toegevoegd aan een row, die dan weer wordt toegevoegd aan de ArrayList. De rows hieruit worden daarna weer toegevoegd aan de table.
Het probleem nu:
Wanneer ik op de linkbutton van een bepaalde taak klik, dan zou er een iframe zichtbaar moeten worden met daar details in. Dit werkt (heb het getest met een normale button).
Ik heb al geprobeerd om hier een method aan te hangen met een EvenHandler, en ook met een CommandEventHandler (waarbij ik dan ook de commandname, argument en command instel).
Wanneer ik nu echter op de linkbutton klik, dan krijg ik een postback (duh), maar ik kom nooit terecht in de method waarin ik zou moeten terechtkomen.
Ik heb al een topic bekeken op GoT waar iemand ongeveer hetzelfde probleem had, maar heb wat problemen daarmee.
Het probleem zou veroorzaakt worden doordat de ViewState wijzigt, waardoor de events niet meer aan de linkbuttons hangen
Ik heb dus, zoals ze daar zeiden, in de page init override proberen de linkbuttons terug aan het event method te hangen, maar daar krijig ik dus een error van een not valid cast.
Moet ik inderdaad zoals in dat topic gezegd deze linkbuttons terug aan hun even hangen, of is er iets anders fout ?
Stukje code:
Hier wordt dus de linkbutton aangemaakt. Daarna voeg ik hem toe aan een cell, die ik toevoeg aan een row, die ik dan weer in de ArrayList stop.
De method die zou moeten getriggerd worden (nu met een beetje testcode)
Zo probeerde ik dus de linkbuttons terug aan hun event te hangen, maar dan krijg ik deze fout:
En zo nee, hoe krijg ik dit probleem dan opgelost ?
Screenshotje
edit: ok, de cast fout is eruit (moest control[0] zijn, de linkbutton is de eerste control in zo een cell).
Maar het probleem is nog altijd niet opgelost. Er gebeurt niks bij het klikken op de linkbutton
Ik ben bezig aan een webform om in een tabel ingevulde en niet ingevulde taken weer te geven voor een dag.
Ik heb eerst geprobeerd rechtstreeks rijen en cellen aan te maken in de tabel, maar wanneer ik dan van dag wisselde (en die dingen opnieuw moeten worden opgebouwd) bleven soms oude waarde's staan. Rows.clear() en dergelijken hielpen niet.
Nu heb ik daarvoor de oplossing gevonden.
Ik maak een ArrayList aan die evenveel rijen bevat als de table (einduur - beginuur, 1 rij per kwartier).
Aan die ArrayList voeg ik dan rijen toe.
Deze rijen bevatten cellen, die, bij de eerste cell van een periode, ook een LinkButton krijgen met daaronder een Label met de omschrijving van de taak.
Dit alles gaat goed. De linkbuttons en cellen worden automatisch aangemaakt en toegevoegd aan een row, die dan weer wordt toegevoegd aan de ArrayList. De rows hieruit worden daarna weer toegevoegd aan de table.
Het probleem nu:
Wanneer ik op de linkbutton van een bepaalde taak klik, dan zou er een iframe zichtbaar moeten worden met daar details in. Dit werkt (heb het getest met een normale button).
Ik heb al geprobeerd om hier een method aan te hangen met een EvenHandler, en ook met een CommandEventHandler (waarbij ik dan ook de commandname, argument en command instel).
Wanneer ik nu echter op de linkbutton klik, dan krijg ik een postback (duh), maar ik kom nooit terecht in de method waarin ik zou moeten terechtkomen.
Ik heb al een topic bekeken op GoT waar iemand ongeveer hetzelfde probleem had, maar heb wat problemen daarmee.
Het probleem zou veroorzaakt worden doordat de ViewState wijzigt, waardoor de events niet meer aan de linkbuttons hangen
Ik heb dus, zoals ze daar zeiden, in de page init override proberen de linkbuttons terug aan het event method te hangen, maar daar krijig ik dus een error van een not valid cast.
Moet ik inderdaad zoals in dat topic gezegd deze linkbuttons terug aan hun even hangen, of is er iets anders fout ?
Stukje code:
C#:
1
2
3
4
5
6
7
8
| LinkButton lb = new LinkButton(); lb.Text = "Taak: " + row1["Nummer"].ToString(); lb.Width = 200; lb.ID = "CF:" + row1["Nummer"].ToString(); lb.Font.Size = 7; lb.CommandName = "CodfusTask"; lb.CommandArgument = row1["nummer"].ToString(); lb.Command += new CommandEventHandler(TaskButtonClick); |
Hier wordt dus de linkbutton aangemaakt. Daarna voeg ik hem toe aan een cell, die ik toevoeg aan een row, die ik dan weer in de ArrayList stop.
C#:
1
2
3
4
5
6
7
8
9
10
| void TaskButtonClick(object sender, CommandEventArgs e) { detailView.Visible = true; string task; task = e.CommandArgument.ToString(); Response.Write(task); /*Session["taskID"] = "529737"; Session["view"] = true; detailView.Attributes["Src"] = "detail.aspx";*/ } |
De method die zou moeten getriggerd worden (nu met een beetje testcode)
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| private void overzicht_Init(object sender, System.EventArgs e) { for(int i = 0; i < cfAL.Count; i++) { for(int j = 0; j < ((TableRow)(cfAL[i])).Cells.Count; j++) { if(((TableRow)(cfAL[i])).Cells[j].Controls.Count > 1) { ((LinkButton)(((TableRow)(cfAL[i])).Cells[j].Controls[1])) .CommandName = "CodfusTask"; ((LinkButton)(((TableRow)(cfAL[i])).Cells[j].Controls[1])) .CommandArgument = "test"; ((LinkButton)(((TableRow)(cfAL[i])).Cells[j].Controls[1])).Command += new CommandEventHandler(TaskButtonClick); } } } } |
Zo probeerde ik dus de linkbuttons terug aan hun event te hangen, maar dan krijg ik deze fout:
Is dit overriden nu echt de oplossing, en zo ja, waar zit de fout ?Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidCastException: Specified cast is not valid.
En zo nee, hoe krijg ik dit probleem dan opgelost ?
Screenshotje
edit: ok, de cast fout is eruit (moest control[0] zijn, de linkbutton is de eerste control in zo een cell).
Maar het probleem is nog altijd niet opgelost. Er gebeurt niks bij het klikken op de linkbutton
[ Voor 20% gewijzigd door DinX op 24-05-2004 17:04 ]
Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride