[英]how rebind a repeater (inside master page) from content page?
是否可以從內容頁面重新綁定轉發器(在母版頁內部)?
我的頁面基於主頁和內容頁面,並且我有一些下載文件的鏈接(錨)!
單擊這些鏈接后,將觸發內容頁面的page_load,並顯示下載窗口。
但是我們永遠不會獲得母版頁的page_Load,在母版頁中,我有一個摘要來顯示下載計數。
在顯示下載窗口之前,如何從內容頁面重新綁定該摘要(在母版頁內部)?
是。 您可以使用this.Master
從Web表單訪問母版頁,然后將其轉換為適當的類型。 從那里您可以訪問您定義的任何公共方法或屬性。
只需在ReBind
添加一個ReBind
方法即可完成您想要的操作,那么您應該一切順利。
編輯
就像這樣:
(this.Master as WhateverTypeYourRealMasterPageIs).ReBind();
是的,這很簡單。 您可以從內容頁面“找到”控件。 這是我綁定到GridView控件的示例。
主:
<asp:GridView runat="server" ID="gridViewMaster" AutoGenerateColumns="true" />
內容頁:
var gridView = (GridView) Master.FindControl("gridViewMaster");
gridView.DataSource = dt;
gridView.DataBind();
只需使用中繼器替換網格視圖對象和控件ID,然后將其綁定到所需的任何對象即可。
編輯-這是找到服務器端div的代碼:
var divMaster = (System.Web.UI.HtmlControls.HtmlGenericControl)Master.FindControl("divMaster");
divMaster.InnerHtml = "<h2>Hello World</h2>";
這樣做的正確方法是使用戶控件觸發母版頁訂閱的事件。 讓我知道您是否需要一些示例代碼
一些示例代碼:
在您的用戶控件中,添加以下事件:
公共事件EventHandler RefreshRequested;
每當需要刷新時,用戶控件都會通過調用以下方法拋出此事件:
private void OnRefreshRequested()
{
//make sure the event is being listened to. no point raising an event if no one cares!
if (this.RefreshRequested != null)
{
this.RefreshRequested(this, EventArgs.Empty);
}
}
現在,母版頁將訂閱用戶控件的事件並采取相應的措施。 訂閱該事件就像訂閱任何其他事件(即Button_Click)一樣。
讓我知道是否可以解決問題。
您可以將母版頁控件公開給子級。 在主頁上使用訪問器將控件公開...例如:
public Repeater MasterpageRptr {get;set;}
然后在您的子頁面上,添加MasterType定義:
<%@ Page Language="C#" Title="Content Page" MasterPageFile="~/MyMaster.master"%>
<%@ MasterType TypeName="MyMaster" %>
(where MyMaster is the master page class file)
然后,您可以使用訪問器在子代碼隱藏中調用此代碼。
。
。
如果有幫助,請投票。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.