2

コンテンツ ページからリピーター (マスター ページ内) を再バインドすることは可能ですか?
私のページはマスター ページとコンテンツ ページに基づいており、ファイルをダウンロードするためのリンク (アンカー) がいくつかあります。

これらのリンクをクリックすると、コンテンツ ページの page_load が起動し、ダウンロード ウィンドウが表示されます。
しかし、マスター ページの page_Load を取得することはありません。マスター ページには、ダウンロード数を表示するための概要があります。
ダウンロード ウィンドウを表示する前に、その概要 (マスター ページ内) をコンテンツ ページから再バインドするにはどうすればよいですか?

4

4 に答える 4

2

はい、それは非常に簡単です。コンテンツページからコントロールを「見つける」ことができます。これは、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>";
于 2011-11-14T21:02:50.103 に答える
2

はい。を使用して、Web フォームからマスター ページにアクセスできますthis.Master。これを適切な型としてキャストする必要があります。そこから、定義したパブリック メソッドまたはプロパティにアクセスできます。

ReBind必要なことを行うメソッドをそこに追加するだけで、準備完了です。

編集

次のようになります。

(this.Master as WhateverTypeYourRealMasterPageIs).ReBind();

于 2011-11-14T20:36:02.350 に答える
1

マスターページコントロールを子に公開できます。マスターページのアクセサーを使用してコントロールを公開します...次のようになります。

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)

次に、これを子コードで呼び出すことができます-アクセサを使用してください。

役に立ったら投票してください。

于 2011-11-14T20:38:19.647 に答える
1

これを行う適切な方法は、マスター ページがサブスクライブするイベントをユーザー コントロールが起動することです。サンプルコードが必要な場合はお知らせください

サンプルコード:

ユーザー コントロールで、次のイベントを追加します。

公開イベント 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) へのサブスクライブと同様です。

これで問題が解決するかどうか教えてください。

于 2011-11-14T20:34:57.110 に答える