ASP.NET PopupControlExtender Проблема - PullRequest
       11

ASP.NET PopupControlExtender Проблема

0 голосов
/ 11 сентября 2009

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

http://i27.tinypic.com/2eduttx.png - это скриншот всплывающего окна

Я завернул целое текстовое поле / всплывающее окно внутри пользовательского веб-элемента управления

Вот код контроля

Код позади

ASP Page

и затем прочитайте из текстового поля событие нажатия кнопки со следующим

((TextBox)puymcStartDate.FindControl("txtDate")).Text

Есть предложения, как решить проблему?

1 Ответ

1 голос
/ 11 сентября 2009

Вам может потребоваться прочитать опубликованное значение формы, а не значение из состояния просмотра. У меня есть следующие методы в моем коде, чтобы справиться с этим.

Приведенный ниже код просто захватывает значения в заголовках запроса (при отправке назад) и устанавливает / обновляет элементы управления. Проблема в том, что при использовании элементов управления ASP.NET Ajax он не регистрирует обновление элемента управления, поэтому состояние представления не изменяется (я думаю). В любом случае, это работает для меня.

protected void btnDone_Click(object sender, EventArgs e)
{
    LoadPostBackData();
    // do your other stuff
}

// loads the values posted to the page via form postback to the actual controls
private void LoadPostBackData()
{
    LoadPostBackDataItem(this.txtYear);
    LoadPostBackDataItem(this.txtDate);
    // put other items here if needed
}

// loads the values posted to the page via form postback to the actual controls
private void LoadPostBackDataItem(TextBox control)
{
    string controlId = control.ClientID.Replace("_", "$");
    string postedValue = Request.Params[controlId];
    if (!string.IsNullOrEmpty(postedValue))
    {
        control.Text = postedValue;
    }
    else
    {
        control.Text = null; // string.Empty;
    }
}
...