Должен быть способ связать мои данные в корректное время

Скажите, что aspx страница, названная theParent, имеет контроль DataGrid, названный theDataGrid и UserControl, названным theUserControl, и theUserControl имеет кнопку, названную theUcButton.

Да, я знаю, очень образное именование.

Когда theUcButton нажат, переменная сеанса изменяется.

Эта переменная сеанса является избранным параметром для источника данных theDataGrid.

Однако из-за порядка материала, названного в жизненный цикл страницы, когда theUcButton нажат и обратная передача сгенерирована, theParent средства управления загружаются, прежде чем theUserControl сбрасывает переменную сеанса, и theDataGrid не показывает новые данные до следующей обратной передачи.

Как я получаю то, что я хочу работать?

Я использую 3.5, если это имеет значение.

1
задан Lill Lansey 2 July 2010 в 15:12
поделиться

3 ответа

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

public partial class WebUserControl : System.Web.UI.UserControl{
public event EventHandler Updated;

protected void Button1_Click(object sender, EventArgs e)
{
    //do some work to this user control

    //raise the Updated event
    if (Updated != null)
        Updated(sender, e);
}}

Затем со своей страницы .aspx вы будете обрабатывать новое событие, как обычно.

    <uc1:WebUserControl ID="WebUserControl1" runat="server" OnUpdated="WebUserControl1_Updated" />

Код позади:

protected void WebUserControl1_Updated(object sender, EventArgs e)
{
    //handle the user control event
}
1
ответ дан 2 September 2019 в 23:20
поделиться

Вы можете объявить событие как член класса UserControl, поднять его и обработать в классе Page.

Вы также можете использовать другие события, такие как Page.PreRender (), чтобы получать данные после событий пользовательского элемента управления.

1
ответ дан 2 September 2019 в 23:20
поделиться

Самый простой способ - отложить привязку данных до конца жизненного цикла, такого как событие Page.PreRender, как предлагает joelt. Если вы выполните привязку, у вас должны быть переменные сеанса.

0
ответ дан 2 September 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: