updatepanel中的radiobuttonlist都是动态创建的,不会在回发时保留值

时间:2015-09-25 21:35:43

标签: c# asp.net

我正在使用下面的代码在我的页面(aspx)上动态创建控件,但是当异步回发触发时,单选按钮不会保留它的选择,并且不会调用uptheup方法。我猜这是视图状态没有返回值,但我想如果控件ID是相同的,它是在Page_Init中创建的,在Page_Load中,值应该自动从视图状态设置?

我想要的是,如果有人选择“否”,文本框将变为可见。控件ID是从数据库设置的,每次加载时都是相同的,因为代码被多次使用(我已经替换了ID以便于在下面阅读)

从Page_Init

调用以下内容
RadioButtonList rbtnl = new RadioButtonList();
                        rbtnl.ID = "rbl_1";
                        rbtnl.Items.Add("Yes");
                        rbtnl.Items.Add("No");
                        rbtnl.AutoPostBack = true;
                        rbtnl.EnableViewState = true;
                        rbtnl.SelectedIndexChanged += new EventHandler(uptheup);
                        rbtnl.ClientIDMode = System.Web.UI.ClientIDMode.AutoID;
                        scriptmanager1.RegisterAsyncPostBackControl(rbtnl);

                        TextBox tbx = new TextBox();
                        tbx.ID = "tb-1";
                        tbx.CssClass = "form-control";
                        tbx.Visible = false;

                        UpdatePanel upx = new UpdatePanel();
                        upx.ID = "up-1";
                        upx.ContentTemplateContainer.Controls.Add(rbtnl);
                        upx.ContentTemplateContainer.Controls.Add(tbx);
                        upx.UpdateMode = UpdatePanelUpdateMode.Always;
                        upx.EnableViewState = true;
                        upx.ChildrenAsTriggers = true;


                        plcEvalBody.Controls.Add(upx);

1 个答案:

答案 0 :(得分:0)

好的所以代码很好而且效果很好,问题是我假设ID不是问题 - 他们是 - 从不在控制ID中使用$。我用它来分隔ID的两个部分,但无效。