2
Posted on 4:18 AM by prajeesh and filed under ,
Sometimes you may need to call a method in the parent page from a child user control, for eg:- we have a user control with New, Save, Delete buttons and based on the page type we may need to call appropreate methods.
Before going to actual aim of this post we must have an idea about delegates and event handlers.
What is a delegate & how should we use it?
A deligate is just like a function pointer in c/c++ , delegates can be used to call a method where the call method can be determined only at run time.
How can we declare, instantiate and call a deligate?
Suppose we have a method to add two numbers and display the result in the webpage.
Step 1 : Declaring a delegate

public delegate void SumOfTheNumbers(int a, int b);

where delegate is a keyword and void is the return type of the delegate.
Step 2: Instantiating and calling the delegate

DisplayNumbersDelegate objDisDelegate = new DisplayNumbersDelegate(AddNumbers);
objDisDelegate(5 ,10 );

where "objDisDelegate" is the delegate variable and "AddNumbers" is the function to be called, note that signature of the AddNumbers function must be similer to the delegate we declared, that is it must accept two integer parameters and returns void, when we instantiate the delegate object we are pointing the AddNumbers function to the delegate variable, we can use delegate variable to call the method by passing the values, here we are calling only one function using this delegate this is called single cast delegate, you can also use delegates to call multiple functions also this type of delegates are called multi cast delegates.
Calling a method in a parent page from a user control :
Suppose we have two text boxes and an add button in the user control and we want to call a method to add two numbers declared in the parent page and display result in the same page.
Step 1: Declare the delegate and event in user control.

public delegate void SumOfTheNumbers(int a, int b);
public event SumOfTheNumbers sumnos;

Step 2:Passing the parmeters to the delegate from click event of the Add button in the user control

protected void btnAdd_Click(object sender, EventArgs e)
{
sumnos(int.Parse(txtBoxNum1.Text), int.Parse(txtBoxNum2.Text));
}

Step 3:Declare the add method in parent page.

public void sumofthenumber(int a, int b)
{
Response.Output.Write("sum of{0} and {1} is : {3} ",a,b,a+b);
}

Step 4: Instantiate the delegate from the page load event of the parent page.

protected void Page_Load(object sender, EventArgs e)
{
delControl1.sumnos += new TestProject.UserControls.delControl.SumOfTheNumbers(sumofthenumber);
}

and you are done, hope you enjoyed this post.






Shout it kick it on DotNetKicks.com
2
Responses to ... Calling a method in parent page from a user control using delegates
Abhishek kumar anurag said... October 24, 2010 at 11:53 PM

nice.

Abhishek kumar anurag said... October 24, 2010 at 11:54 PM

nice article.