Posted on 4:18 AM by prajeesh and filed under
ASP.net,
C#
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);
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 );
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;
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));
- }
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);
- }
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);
- }
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.