ZekeLA
asked on
Capture MasterPage dynamic usercontrol event from page
My masterpage has a method which loads a usercontrol dynamically when a user clicks an imagebutton on the page. When the user clicks a button in the usercontrol, I need to raise an event which is processed by the calling page. I could have the masterpage raise the event since it knows about the usercontrol.
But I wonder if there's a way to have the user control raise the event and have the content page listen directly.
Here's a summary of the sequence of events:
Please let me know if it's possible to have the page capture the user control event directly.
Thanks.
But I wonder if there's a way to have the user control raise the event and have the content page listen directly.
Here's a summary of the sequence of events:
user clicks image button on page
page calls masterpage method
masterpage adds usercontrol
user clicks button on user control
user control raises event or user control raises masterpage event
page captures usercontrol event or page captures masterpage event
Please let me know if it's possible to have the page capture the user control event directly.
Thanks.
You could put the user control inside an iFrame so that the masterpage does not get called.
See if the below psuedo-code which mainly uses delegate/event helps...
class UserControl1
{
// usercontrol defines ButtonClickedEvent
private delegate void ButtonClickedEvent();
public ButtonClickedEvent ButtonClickedEventHandler;
private button1_OnClick(...)
{
//•user clicks button on user control
// when button is clicked on usercontrol
// it calls the delegate
if(ButtonClickedEventHandl
ButtonClickedEventHandler(
}
>•page calls masterpage method
in page code-behind:
{
// when calling master page method
// pass delegate for the handler method whic is in Page code-behind..
// here OnButtonClicked is the method of the Page
// which will get called when usercontrol button is clicked
masterPage.CallMethod(new ButtonClickedEventHandler(
}
public void OnButtonClicked()
{
// got the event; process it
}
> •masterpage adds usercontrol
in master page code-behind:
public CallMethod(ButtonClickedEv
{
// this method is called by Page
// and delegate is a param
// set the delegate object in usercontrol's delegate property
> •masterpage adds usercontrol here
userControl1.ButtonClicked
}
ASKER
1. Are you able to translate into VB.NET. I tried an online converter but it didn't work and I think VB.Net doesn't require the delegates.
I think my problem isn't the actual coding but my project. For some reason I can't see the public method of my master page. If you could look at my other post (https://www.experts-exchange.com/questions/26423038/How-to-raise-masterpage-event-from-dynamic-usercontrol.html), it contains the code I'm having problems with.
When I look at my web site's object viewer, it shows my master page class under App_Web_np1n6_lb but NOT under D\...\MyWebSite.
I think my problem isn't the actual coding but my project. For some reason I can't see the public method of my master page. If you could look at my other post (https://www.experts-exchange.com/questions/26423038/How-to-raise-masterpage-event-from-dynamic-usercontrol.html), it contains the code I'm having problems with.
When I look at my web site's object viewer, it shows my master page class under App_Web_np1n6_lb but NOT under D\...\MyWebSite.
This link => http://msdn.microsoft.com/en-us/library/c8y19k6h.aspx
shows how to access the members of a master page in the content page...see if this helps you call the master page method....
Below is vb equivalent pseudo-code for the above delegate code...note to call the method of master page from the content page...@MasterPage directive should have been set in the content page as shown in the link above....
In User control class file:
// usercontrol defines ButtonClickedEvent
Delegate Function ButtonClickedEvent() As String
Public Dim ButtonClickedEventHandler As ButtonClickedEvent
Protected Sub button1_Click(.......
//•user clicks button on user control
// when button is clicked on usercontrol
// it calls the delegate
LoginEventHandler ( ) ' CALL DELEGTE method
End Sub
in content page class file:
>•page calls masterpage method
// when calling master page method
// pass delegate for the handler method whic is in Page code-behind..
// here OnButtonClicked is the method of the Page
// which will get called when usercontrol button is clicked
masterPage.CallMethod(New ButtonClickedEvent(AddressOf OnButtonClicked));
Public Function OnButtonClicked() As String
' this is the function that will get called when button is clicked in user control
End Function
> •masterpage adds usercontrol
in master page code-behind:
Public Function CallMethod( handler As ButtonClickedEvent)
// this method is called by Page
// and delegate is a param
// set the delegate object in usercontrol's delegate property
> •masterpage adds usercontrol here
userControl1.ButtonClickedEventHandler = handler;
End Funcion
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.