Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Add Event Handler Dynamically, but assigning function name at run-time, not to static function

Reply
Thread Tools

Add Event Handler Dynamically, but assigning function name at run-time, not to static function

 
 
Jose Suero
Guest
Posts: n/a
 
      12-21-2003
Hi all
I have a dynamically created button, I can add an event handler with:

AddHandler button.click, AddressOf static_function

This works great, but what I need is to create a function that takes
the control, the event and the function as parameters, something like:

function addevent(control as object, event as string, functionname as
string)
AddHandler control.event, addressof functionname
end function

A solution for this would be to add a single function that handles all
buttons and select the correct action thru commandarguments, that
would work, but it's really not what i'm looking for.


Thanks in advance,

Jose Suero
 
Reply With Quote
 
 
 
 
Teemu Keiski
Guest
Posts: n/a
 
      12-23-2003
Hi,

you cannot pass the functionname as such as AddressOf expects a delegate
type, not function name as string. You could try to use reflection as this
article explains:

http://www.123aspx.com/redir.aspx?res=31050

--
Teemu Keiski
MCP, Microsoft MVP (ASP.NET), AspInsiders member
ASP.NET Forum Moderator, AspAlliance Columnist


"Jose Suero" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) om...
> Hi all
> I have a dynamically created button, I can add an event handler with:
>
> AddHandler button.click, AddressOf static_function
>
> This works great, but what I need is to create a function that takes
> the control, the event and the function as parameters, something like:
>
> function addevent(control as object, event as string, functionname as
> string)
> AddHandler control.event, addressof functionname
> end function
>
> A solution for this would be to add a single function that handles all
> buttons and select the correct action thru commandarguments, that
> would work, but it's really not what i'm looking for.
>
>
> Thanks in advance,
>
> Jose Suero



 
Reply With Quote
 
 
 
 
Jose Suero
Guest
Posts: n/a
 
      12-26-2003
Thanks a lot for your post, It took me on the right track, I had to
change tiny things, since I was getting an error but this works for
imagebuttons, binding an event for a dynamic created object from a
class library

Public Shared Function addevent(ByVal controlname As String, ByVal
type As String, ByVal eventname As String, ByVal procedure As String)
Dim control As System.Web.UI.WebControls.ImageButton
control = page.findcontrol(controlname)
Dim p As Object
Dim DLLName As String = "projectname"
Dim asm As [Assembly] = [Assembly].Load(DLLName)
Dim t As Type = asm.GetType(DLLName & ".WebForm1", True)
p = Activator.CreateInstance(t)
Dim mymethod As MethodInfo = t.GetMethod(procedure)
' get a reference to the EventInfo for this object
Dim pEv As EventInfo = control.GetType.GetEvent(eventname)
' create a delegate to the local procedure
Dim pDel As [Delegate] =
[Delegate].CreateDelegate(pEv.EventHandlerType, mymethod)
' make the local procedure a handler for the event
pEv.AddEventHandler(control, pDel)
End Function

"Teemu Keiski" <(E-Mail Removed)> wrote in message news:<#$(E-Mail Removed)>...
> Hi,
>
> you cannot pass the functionname as such as AddressOf expects a delegate
> type, not function name as string. You could try to use reflection as this
> article explains:
>
> http://www.123aspx.com/redir.aspx?res=31050
>
> --
> Teemu Keiski
> MCP, Microsoft MVP (ASP.NET), AspInsiders member
> ASP.NET Forum Moderator, AspAlliance Columnist
>
>
> "Jose Suero" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) om...
> > Hi all
> > I have a dynamically created button, I can add an event handler with:
> >
> > AddHandler button.click, AddressOf static_function
> >
> > This works great, but what I need is to create a function that takes
> > the control, the event and the function as parameters, something like:
> >
> > function addevent(control as object, event as string, functionname as
> > string)
> > AddHandler control.event, addressof functionname
> > end function
> >
> > A solution for this would be to add a single function that handles all
> > buttons and select the correct action thru commandarguments, that
> > would work, but it's really not what i'm looking for.
> >
> >
> > Thanks in advance,
> >
> > Jose Suero

 
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 Assigning OnChange Handler HugeBob Javascript 2 06-03-2008 07:35 PM
Event Handler that creates adds another event handler kaczmar2@gmail.com ASP .Net 1 02-22-2007 07:37 AM
Assigning methods to objects, and assigning onreadystatechange to an XMLHttpRequest -- an inconsistency? weston Javascript 1 09-22-2006 09:33 AM
How to recall add event from an Event handler?? RC ASP .Net Web Controls 1 01-06-2005 07:44 PM
Dinamically assigning handler methods to controls on the page =?Utf-8?B?Vmk=?= ASP .Net 2 11-02-2004 03:17 AM



Advertisments