從master page觸發content page的update panel

摘要:從master page觸發content page的update panel

如果在master page上的按鈕按下後,content page的update panel進行更新要怎麼做呢?

先在master上的page_load加上下面這段,註冊非同步更新的觸發物件。

  protected void Page_Load(object sender, EventArgs e)  
  {
        ScriptManager1.RegisterAsyncPostBackControl(ControlID);  
  }

按紐按下要做的事,這也是寫在master page上的。

    protected void MasterButton_Click(object sender, EventArgs e)
    {    
        //要做的事...
    
        //讓content page的updatepanel進行update
        ((UpdatePanel)ContentPlaceHolder1.FindControl("UpdatePanel1")).Update();
    }

這樣只是把要做的事在master做好,但呈現的部份是在content的區域。

這邊有一個範例,在master page按下"+"或"-"的按鈕,放在content page裡的calendar就會移動日期。
Using the ASP.NET UpdatePanel Control with Master Pages
http://www.asp.net/AJAX/documentation/live/tutorials/UsingUpdatePanelMasterPages.aspx 

如果要按下master的按鈕之後,是執行content裡的function,並在content的panel更新呢?

什麼時候會有這樣的需求?當你按鈕的功能都固定是那幾個,比如查詢。但每一頁做的查詢工作都不一樣。一般的作法當然可以在每個content page都擺上button然後寫onClick event。但是也可以統一把"查詢"這個按鈕放在master page上,按下它時,再讓它去執行content裡面的onClick function,這樣的感覺就像把本來是master page要做的事"轉交"給另外的人去做(content page 的 function)。這時候就可以用c#裡的"委派" (delegate)。有空再來打一篇。