我正在使用下面的代码在我的页面(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);
答案 0 :(得分:0)
好的所以代码很好而且效果很好,问题是我假设ID不是问题 - 他们是 - 从不在控制ID中使用$。我用它来分隔ID的两个部分,但无效。