我在代码隐藏中创建了一些输入控件(文本),作为动态RadiobuttonLists的一部分(以便文本框位于每个单选按钮旁边):
RadioButtonList radioOption = new RadioButtonList();
radiobuttonlist.Items.Add(new ListItem(dt.Rows[i][9].ToString() + " <input id=\"" + name + "\" runat=\"server\" type=\"text\" value=\"Enter text\" />")
所有控件都在UpdatePanel中。
如何在我的代码中更新输入标记,以便我可以获得如下值:
value="<%= this.InputValue %>" />
原因是我可以访问/设置Page_Load中的值(如在回发时,输入文本消失):
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.InputValue = "something";
}
}
有什么想法吗?
感谢!!!
答案 0 :(得分:1)
值总是消失,因为您没有在帖子后面保留数据。我甚至没有这个
“&lt;%= this.InputValue%&gt;”
会以您认为的方式渲染。 &lt; %%&gt;标签由服务器呈现,而不是浏览器。相反,使用视图状态或会话来跨帖子保留值。如果您需要帮助,请发布更多您的控件代码以及您遇到的问题
答案 1 :(得分:1)
我认为您遇到问题ASP.NET Page Life Cycle。
当您向页面的控件集合动态添加控件时,需要在正确的时间进行设置。从上面链接的文档:
在开始阶段完成之后和初始化之前引发 阶段开始。
将此事件用于以下事项:
......
- 创建或重新创建动态控件。
...
这样,您可以使用普通的ASP.NET视图状态在PostBacks中保留信息。
如果您在Page_PreInit活动期间创建动态RadioButtonLists,我想大部分问题都将得到解决。
protected void Page_PreInit(Object sender, EventArgs e)
{
RadioButtonList radioOption = new RadioButtonList();
radiobuttonlist.Items.Add(new ListItem(dt.Rows[i][9].ToString() + " <input id=\"" + name + "\" runat=\"server\" type=\"text\" value=\"Enter text\" />")
}
答案 2 :(得分:1)
我建议您在代码后面使用UpdatePanel.Update method
,以便使用新值更新您的内容
注意:您的字段InputValue应位于UpdatePanel部分,以便刷新
link:http://msdn.microsoft.com/fr-fr/library/system.web.ui.updatepanel.update.aspx