Handle Event of Dynamically Added User Control

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
 
B

billmiami2

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
 
J

Jon B

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
 
B

billmiami2

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
 
J

Jon B

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
 
B

billmiami2

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

Members online

Forum statistics

Threads
473,968
Messages
2,570,153
Members
46,699
Latest member
AnneRosen

Latest Threads

Top