如何从子表单调用父表单的功能

时间:2015-03-02 11:34:09

标签: c# asp.net

我正在开发一个由2种形式组成的应用程序,父母和孩子。 在父母形式我有一个框架。如果单击父窗体的按钮1,则子窗体将在框架内打开。现在我需要的是当点击子表单的按钮2然后它应该调用父表单的Button2_click。 这是我的父表单代码:

public  void MethodToExecute() //call this method
{
    UPCCharges.Update();
    if (HttpContext.Current.Session["CCost"] != null)
    {
        TxtCCost.Text = Session["CCost"].ToString();
    }

    DivCCharges.Visible = false;
    IFMCCharge.Visible = false;
}

这是Form 2代码:

protected void dgCFrom_ItemCommand(Object source, DataGridCommandEventArgs e)
{
    UPCFromGrid.Update();
    for (int vLoop2 = 0; vLoop2 < gvInner1.Items.Count; vLoop2++)
    {
        if (TxtTotalCFrom1 != null && TxtTotalCFrom2 != null)
        {
            TextBox TxtTotalCFrom = (TextBox)dgCFrom.Items[vLoop].FindControl("TxtTotalCFrom");
            TextBox TxtTotalCYeild = (TextBox)dgCFrom.Items[vLoop].FindControl("TxtTotalCYeild");

            Session["CCost"] = (mobjGenlib.ConvertDecimal(TxtTotalCFrom1.Text) + mobjGenlib.ConvertDecimal(TxtTotalCFrom2.Text)).ToString();
            Session["CYeild"] = (mobjGenlib.ConvertDecimal(TxtRecoveryOrigin.Text) - mobjGenlib.ConvertDecimal(TxtTotalCFrom.Text)).ToString();
            Session["CName"] = dgCFrom.Items[vLoop].Cells[1].Text;
            Session["CJobID"] = HBLGeneralID;

        }
    }
}
FrmMasterSimulationChartNewUF frm = new FrmMasterSimulationChartNewUF();
frm.MethodToExecute();
}

我得到的错误是:

在主窗体函数MethodtoExecute中保留断点时,将Object引用设置为null。但是从form1开始执行它没有错误。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您应该参考母版页

所以在你的Contetnt页面设计中添加类似这样的内容:

<%@ MasterType VirtualPath="~/Site.master" %>

尝试这样的事情:

 var master = Master as SiteMaster;
    SiteMaster mm = new SiteMaster();
    mm.MethodToExecute();
    master.MethodToExecute();

让我知道反馈意见。

答案 1 :(得分:0)

假设您的“子”表单实际上位于“父”表单的iframe中,并且这两个页面都托管在同一个应用程序和域中。

您可以将javascript单击事件附加到子窗体的Button2,然后使用parent.document在父窗体上调用Button2的单击事件

E.g。

<button id="Button2" onclick="parent.document.getElementById('Button2').click();return false;">Child button 2</button>

请注意按钮的实际ID值,因为它们可能因UpdatePanel等而更改。