ASP.NET PopupControlExtender问题

时间:2009-09-11 15:10:07

标签: c# asp.net ajaxcontroltoolkit

我正在尝试创建一个弹出窗口,用于选择文本框的月份/年份。我有点工作,但是当我在提交表单时尝试从文本框中读取时,它返回一个空字符串。然而,当我点击屏幕截图中显示的完成按钮时,我可以在页面上直观地看到结果。

http://i27.tinypic.com/2eduttx.png - 是弹出窗口的截图

我已将整个文本框/弹出窗口包装在Web用户控件

以下是控件的代码

Code Behind

ASP Page

然后使用以下

从按钮单击事件的文本框中读取
((TextBox)puymcStartDate.FindControl("txtDate")).Text

有关如何解决问题的建议吗?

1 个答案:

答案 0 :(得分:1)

您可能需要阅读表单发布值而不是视图状态中的值。我的代码中有以下方法来处理这个问题。

以下代码只是抓取请求标头中的值(在回发后)并设置/更新控件。问题是,当使用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;
    }
}