我正在尝试创建一个弹出窗口,用于选择文本框的月份/年份。我有点工作,但是当我在提交表单时尝试从文本框中读取时,它返回一个空字符串。然而,当我点击屏幕截图中显示的完成按钮时,我可以在页面上直观地看到结果。
http://i27.tinypic.com/2eduttx.png - 是弹出窗口的截图
我已将整个文本框/弹出窗口包装在Web用户控件
中以下是控件的代码
然后使用以下
从按钮单击事件的文本框中读取((TextBox)puymcStartDate.FindControl("txtDate")).Text
有关如何解决问题的建议吗?
答案 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;
}
}