asp.net – 为什么我的动态添加控件会在Postback后松散它们的值
要问我的问题,我创建了一个包含Button和带有SqlDataSource的DataList的aspx文件:
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> <asp:DataList ID="DataList1" runat="server" DataKeyField="a" DataSourceID="SqlDataSource1" > <ItemTemplate> a: <asp:Label ID="aLabel" runat="server" Text='<%# Eval("a") %>' /> <br /> b: <asp:Label ID="bLabel" runat="server" Text='<%# Eval("b") %>' /> <br /> </ItemTemplate> </asp:DataList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:probaConnectionString %>" SelectCommand="SELECT [a],[b] FROM [PROBA_TABLE]"></asp:SqlDataSource> 在我的代码后面,我将TextBoxes添加到DataList的Items.我在Page_Load中为每个Item添加了一个TextBox,在Button Click事件处理程序中添加了另一个TextBox. public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender,EventArgs e) { if (IsPostBack) { foreach (DataListItem item in DataList1.Items) { item.Controls.Add(new TextBox()); } } } protected void Button1_Click(object sender,EventArgs e) { foreach (DataListItem item in DataList1.Items) { item.Controls.Add(new TextBox()); } } } } 除了一件事,这很好.当我单击Button时,在Page_Load中创建的TextBox会保留其Text值,但在Button1_Click中创建的TextBox会丢失其Text值.我真正的问题比这更复杂,但我认为解决这个问题会对我有所帮助. 解决方法
应该在页面ViewState中接收数据的每个控件都应该在Init或Load事件处理程序中实例化,因为ViewState被持久化以控制在Click,Change和其他控件事件之前(当检测到ViewState更改时触发这些事件,因此必须读取ViewState)在Click事件被触发之前).
所以这个过程应该是这样的: > OnInit(创建静态控件) 建议: 您可以使用隐藏字段来保存其他状态信息,然后在OnLoad中,您可以读取该信息以重新创建动态创建的控件. 此外,您应该显式设置文本框的ID属性,以便可以正确地保留值,不依赖于ASP.Net. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 您使用ASP.NET 2.0 webparts的经验如何?
- asp.net-web-api – Web API中的Actions和QueryString参数
- asp.net – http 304和404之间的任何性能差异?
- asp.net – 为VS2010和TFS中的团队管理web.config
- asp.net-core-mvc – 按内容类型,在网络核心2中的Web api属
- asp.net-mvc-4 – 如何使用Enterprise Library 6将异常,事件
- ASP.NET MVC 使用Bootstrap的方法
- asp.net – Mscaptcha在本地运行良好,但图片没有在服务器中
- asp.net – 视图状态中存储的项目的生命周期是多少?
- 在asp.net中的web.config的位置元素中有多个路径
- asp.net-mvc – asp.net mvc中的内容文件夹是否神
- asp.net-mvc – mvc中的多个内容占位符?
- 如何在ASP.NET WebForm中使用Ninject注入依赖项?
- 学习ASP.NET的第一天
- asp.net-mvc – 如何在VS2012 MVC4项目中设置Ext
- ASP.NET Core 2.0 机密配置项
- asp.net-mvc – 在ASP.NET MVC中,<%=和<%:?有
- asp.net-mvc-5 – EntityFramework.SqlServer.dl
- asp.net – 无法安装Microsoft.AspNet.Razor 3.0
- asp.net-mvc – 刷新数据库更改页面