1

我在代码隐藏中创建了一些输入控件(文本)作为动态 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"; 
    } 
} 

有任何想法吗?

谢谢!!!

4

3 回答 3

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\" />")
}
于 2013-03-27T13:51:36.553 回答
1

我建议你UpdatePanel.Update method在你的代码后面使用,以便用新值更新你的内容

注意:您的字段 InputValue 必须在 UpdatePanel 部分中,以便刷新

链接:http: //msdn.microsoft.com/fr-fr/library/system.web.ui.updatepanel.update.aspx

于 2013-03-27T13:52:00.960 回答
1

该值总是消失,因为您没有在回发中保留数据。我什至没有这个

“<%= this.InputValue %>”

会按照你想象的方式渲染。<% %> 标签由服务器呈现,而不是浏览器。相反,使用视图状态或会话在回发中保留值。如果您需要帮助,请发布更多控件的代码以及您遇到的问题

于 2013-03-27T13:36:17.620 回答