Delegate : How to access method from parent page(aspx) to child page(control) using delegate.
Here i want to call function from parent page to child page. Here i have gridview at aspx(Detail.aspx) page. Also bindgrid() method having on code page. And i have create control on this page, at that control page i want reload bindgrid() method to refresh the gridview.
Method to bindGrid() at parent (aspx) page as below:
private void bindGrid()
{
DataTable dt = new DataTable();
dt = _clsDetail.GetData();
if (dt != null && dt.Rows.Count > 0)
{
gvDetail.DataSource = dt != null && dt.Rows.Count > 0 ? dt : null;
gvDetail.DataBind();
ViewState["gvDetail"] = dt != null && dt.Rows.Count > 0 ? dt : null;
}
}
For this functionality i have create a delegate, having no parameter on control page like:
public delegate void delegate_name();
public event delegate_name event_name;
Example:
public delegate void DataSaveCalled();
public event DataSaveCalled DataSaved;
And here i have call this DataSaved function after DetailSave button click as below at control page:
protected void btnDetailSave_Click(object sender, EventArgs e)
{
try
{
string strout = "";
bool status = false;
_clsDetail.add_Detail(out strout, out status);
if (status == true)
{
lblMsg.Text="Request added successfully.";
//To access the bindGrid() method here:
if (DataSaved != null)
{
DataSaved();
}
}
else
{
lblMsg.Text="Request not added.";
}
}
catch (Exception ex)
{ throw ex }
}
Now i assign that method from parend (aspx) page to control page using define delegate at child (control) page like:
At Page_Load() of parent (aspx) page:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
control_name.event_name += new Controls.control_name.delegate_name(assign_function_to_call);
}
}
Example:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ccShowRequest.DataSaved += new Controls.Detail.OnDataSaveCalled(bindGrid);
}
}
This is all about delegate, That you want to access method from parent page(aspx) to child page(control).
No comments:
Post a Comment