Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Building Controls > Calendar Controls don't fire events

Reply
Thread Tools

Calendar Controls don't fire events

 
 
Mark Sisson
Guest
Posts: n/a
 
      11-29-2003
Good afternoon all.
I am creating a usercontrol (*.ascx) with a Calendar control on it.
In the Calendar's DayRender event I'm dynamically adding ImageButton
controls to cells on the calendar. For each of these image button I'm
hooking up a click event as so:

imgButton.Click += new ImageClickEventHandler(this.ImageButton_Click);

Problem is that when the user clicks on the image button my event
handler never fires. Now I think I know the reason but I don't know
the best solution. Since the controls are added too late in the page
lifecycle they aren't available when the postback happens so they
never get called. So how do I create all these ImageButton's so that
they can receive events on post back?

I've heard about bubbling events but I'm not sure how they work.
Could I a add control to my Calendar in it's DayRender event and tell
the Framework to have it's click-event be sent to the Calendar's click
event???????

tia
 
Reply With Quote
 
 
 
 
Jos
Guest
Posts: n/a
 
      12-01-2003
Mark Sisson wrote:
> Good afternoon all.
> I am creating a usercontrol (*.ascx) with a Calendar control on it.
> In the Calendar's DayRender event I'm dynamically adding ImageButton
> controls to cells on the calendar. For each of these image button I'm
> hooking up a click event as so:
>
> imgButton.Click += new ImageClickEventHandler(this.ImageButton_Click);
>
> Problem is that when the user clicks on the image button my event
> handler never fires. Now I think I know the reason but I don't know
> the best solution. Since the controls are added too late in the page
> lifecycle they aren't available when the postback happens so they
> never get called. So how do I create all these ImageButton's so that
> they can receive events on post back?
>
> I've heard about bubbling events but I'm not sure how they work.
> Could I a add control to my Calendar in it's DayRender event and tell
> the Framework to have it's click-event be sent to the Calendar's click
> event???????
>
> tia


I would suggest that on postback, you recreate the calendar in
exactly the same way as before the postback.
Then the events will fire normally.
In the event handler, you can destroy everything again and
build the final page.

--

Jos


 
Reply With Quote
 
 
 
 
Mark Sisson
Guest
Posts: n/a
 
      12-03-2003
Figured it out gang. Basically it comes down to this: GIVE ALL YOUR
CONTROLS IDS!!

Basically I was creating a control dynamically in the PreRender event
and then recreating it during Postback in the Init event like this:

Pseudocode
===================
Page_OnInit
if (Session["ctrlname"] == "") Session["ctrlname"] = "a.ascx";
UserControl uc = LoadControl(Session["ctrlname"];
ud.ID = "MyControl";
Controls.Add(uc)

Page_PreRender
switch case (Session["ctrlname"]) {
case "a.ascx" {
Session["ctrlname"] = "b.ascx";
break;
}
case "b.ascx" {
Session["ctrlname"] = "c.ascx";
break;
}
}
Controls.Clear();
Controls.Add(LoadControl(Session["ctrlname"])



The problem this causes is that when you Clear() the Controls array it
doesn't reset it's control id numbering scheme to start back at zero.
So the first time this page is rendered the controls that goes "out
the door" has an id of ctrl_1 NOT ctrl_0. So during Postback when we
do a great job of recreating the control in the Init routine the
control we create has the id ctrl_0 and doesn't match the control
being posted back which is ctrl_1.

The whole solution is to hardcode an ID for your control. Here's the
new pseudocode that now works:


Pseudocode
===================
Page_OnInit
if (Session["ctrlname"] == "") Session["ctrlname"] = "a.ascx";
Controls.Add(LoadControl(Session["ctrlname"])

Page_PreRender
switch case (Session["ctrlname"]) {
case "a.ascx" {
Session["ctrlname"] = "b.ascx";
break;
}
case "b.ascx" {
Session["ctrlname"] = "c.ascx";
break;
}
}
Controls.Clear();
UserControl uc = LoadControl(Session["ctrlname"];
ud.ID = "MyControl";
Controls.Add(uc)
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
dynamically adding controls with events (but events are not firing) SevDer ASP .Net 2 11-13-2007 06:33 AM
runtime events that generate other controls and events newbye ASP .Net 0 07-06-2006 06:27 PM
Events Events Events Please Help Chris ASP .Net Web Controls 0 08-30-2005 08:21 PM
2 controls on the same page and wrong events fire justengland@gmail.com ASP .Net Building Controls 4 06-02-2005 04:00 PM
Calendar Controls don't fire events Mark Sisson ASP .Net Web Controls 2 12-03-2003 04:06 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57