как привязать ретранслятор (внутри главной страницы) к контентной странице? - PullRequest
2 голосов
/ 15 ноября 2011

Можно ли привязать ретранслятор (внутри главной страницы) со страницы содержимого?
Мои страницы основаны на главной и содержательной страницах, и у меня есть несколько ссылок (якорей) для загрузки файлов!

После того, как вы нажмете на эти ссылки, стартует page_load содержимого страницы, и появится окно загрузки.
Но мы никогда не получим page_Load главной страницы, и на главной странице у меня есть сводка для отображения количества загрузок.
Как я могу перепривязать эту сводку (внутри главной страницы) со страницы содержимого перед отображением окна загрузки?

Ответы [ 4 ]

2 голосов
/ 15 ноября 2011

Да, это довольно просто.Вы можете «найти» элемент управления на странице содержимого.Вот пример, где я привязываюсь к элементу управления GridView.

Мастер:

<asp:GridView runat="server" ID="gridViewMaster" AutoGenerateColumns="true" />

Страница содержимого:

var gridView = (GridView) Master.FindControl("gridViewMaster");

gridView.DataSource = dt;
gridView.DataBind();

Просто замените объект вида сетки и элемент управленияИдентификатор с вашим ретранслятором ... и привязать его к любому объекту, который вы хотите.

Редактировать - Вот код для поиска div на стороне сервера:

var divMaster = (System.Web.UI.HtmlControls.HtmlGenericControl)Master.FindControl("divMaster");
divMaster.InnerHtml = "<h2>Hello World</h2>";
2 голосов
/ 15 ноября 2011

Да. У вас есть доступ к главной странице из вашей веб-формы, используя this.Master, которую вам нужно будет преобразовать в соответствующий тип. Оттуда вы можете получить доступ к любым публичным методам или свойствам, которые вы определили.

Просто добавьте туда метод ReBind, который делает то, что вы хотите, и вы должны хорошо идти.

EDIT

Это было бы что-то вроде:

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

1 голос
/ 15 ноября 2011

Вы можете открыть элемент управления главной страницы для детей.Сделайте элемент управления общедоступным с помощью средства доступа на главной странице ..., например:

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)

Затем можно вызватьэто в вашем детском коде - смотрите, используя аксессор.

.

.

Пожалуйста, проголосуйте, если будете полезны.

1 голос
/ 15 ноября 2011

Правильный способ сделать так, чтобы пользовательский элемент управления вызвал событие, на которое подписывается главная страница.Дайте мне знать, если вам нужен пример кода

Пример кода:

В своем пользовательском элементе управления добавьте следующее событие:

открытое событие 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).

Дайте мне знать, если это прояснилось.

...