摘要:從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)。有空再來打一篇。