Handle Event of Dynamically Added User Control

  • Thread starter Thread starter Jon B
  • Start date Start date
J

Jon B

Hi There!

How to handle the events of a dynamically added user control?

e.g. I have following code...

Dim myUserControl as Object = LoadControl("myFirstControl.ascx")

myFirstControl fires LinkClicked event and I don't know how to handle that
LinkClicked event from containing page.

Please help!! Thanks!!!

Jon
 
You will need to use addhandler to specify the event handler as in


Dim myUserControl as Object = LoadControl("myFirstControl.ascx")
AddHandler myUserControl.myEvent, AddressOf Me.MyEventHandler

Elsewhere on the page place the event handling routing you specified

Sub MyEventHandler(obj as Object, e as EventArgs)
'Do something when the event fires
End Sub

Bill E.
Hollywood, FL
 
Thanks for the reply Bill, but I get the following error message when I
tried your method...

BC30676: 'LinkClicked' is not an event of 'System.Object'.

Any ideas? Thanks again!!!

Jon
 
Well, I suppose that you need to dimension your user control not as an
object, but as an instance of the user control's type

Dim MyUserControl as usercontrolclass =
LoadControl("myFirstControl.ascx")

Bill
 
Thanks for the reply again Bill! But how do I dimension my user control as
the type of User control?

I'm not using Code-Behind method and my project also didn't get complied
every time I change something. Both code and HTML is in one ASCX file.
There's a ClassName attribute at the top of the page in Control directive.
But I'm unable to declare an object with that type in containing page.

So how do I go about it??

Thanks!!
Jon
 
Jon,

Now I understand. Things are a bit less clear with the in-line coding.

If you don't use the ClassName attribute in your control
"myusercontrol.ascx", I think that the class is implicitly created as

ASP.myusercontrol_ascx

If you specify a class name, it will be

ASP.myspecifiedclassname

However, if you're unsure, you can load the control as an object, then
return its type with GetType as in

Dim myUserControl as Object = LoadControl("myFirstControl.ascx")
Response.Write(myUserControl.GetType.toString)

Once you know the type, you can change to

Dim myUserControl as ASP.myFirstControl =
LoadControl("myFirstControl.ascx")
AddHandler myUserControl.myCustomEvent, AddressOf Me.MyEventHandler

Bill
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top