簡體   English   中英

如何從內容頁面重新綁定中繼器(在母版頁內部)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM