2015-03-02 34 views
0

我正在開發由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; 
} 

,這是表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作爲對象引用未設置爲空。但是從form1執行它沒有錯誤。

任何人都可以請幫我解決這個問題嗎?

+2

你的意思是你使用HTML框架?這是哪一年? – walther 2015-03-02 11:37:23

+0

我使用IFrame.But如果我的猜測是正確的,我認爲iframe不起作用從子窗體的按鈕單擊調用父窗體功能。 – Appdev 2015-03-02 11:43:24

+1

不要這樣做.. Iframes應該只用於場景,當你沒有任何控制的「孩子」的東西..例如,當你有一個非常基本的網站,並希望包括第三方留言簿..或者當你使用Facebook API和類似的情況。你無法在服務器端操作iframe中的「parent」。也許一些hacky的javascript/ajax,但這是一個非常醜陋,容易出錯的做事方式。 – walther 2015-03-02 11:47:26

回答

1

你應該參考的母版頁

這麼加是這樣的一行到你的Contetnt頁面設計:

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

,並嘗試這樣的事:

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

讓我知道反饋。

+0

將嘗試您的解決方案,並儘快回覆您 – Appdev 2015-03-02 11:57:10

+0

我收到錯誤的詞主...並且我已經試過的方式FrmMasterSimulationChartNewUF frm = new FrmMasterSimulationChartNewUF();如果(frm!= null) { frm。MethodToExecute(); }但如上所述,在該函數中得到對象引用錯誤 – Appdev 2015-03-02 12:00:18

+0

好吧,看看我編輯的答案。我只是測試它,它像一個魅力! – Aria 2015-03-02 12:06:21

0

假設您的「子」表單實際上位於「父」表單的iframe中,並且這兩個頁面都託管在相同的應用程序和域中。

您可以將JavaScript的點擊事件附加到Button2的子窗體的使用parent.document然後調用Button 2的Click事件父窗體上

例如

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

只是當心你的按鈕的實際ID值的,因爲他們有變化,由於UpdatePanel的等