我有一个包含一些动态创建的控件(文本框和DropDownList的)的页面。当回发时,文本框保持其价值,但DropDownLists失去ListItems的。这是相当混乱,因为在页级别DropDownList中也保持其ListItems的。任何人都可以看看有什么不对的code以下?
在解决这一问题将是极大的AP preciated任何帮助。
<%@页面语言=VB%GT;<脚本=服务器> 保护小组Page_Init(BYVAL发件人为对象,BYVAL E上System.EventArgs) 如果没有Page.IsPostBack然后 ddlFixed.Items.Add(新列表项(12,13)) ddlFixed.Items.Add(新建列表项(14,15)) 万一 昏暗我作为整数 对于i = 0至3 朦胧DDL作为新的DropDownList ddl.ID =ddlPage与&一世 ddl.EnableViewState = TRUE 如果没有Page.IsPostBack然后 ddl.Items.Add(新列表项(12,13)) ddl.Items.Add(新建列表项(14,15)) 万一 pnlDynamic.Controls.Add(DDL) 昏暗txtBx作为新文本框 txtBx.ID =txtPage与&一世 如果没有Page.IsPostBack然后 txtBx.Text =preSET 万一 pnlDynamic.Controls.Add(txtBx) 下一个 结束小组< / SCRIPT>< HTML的xmlns =http://www.w3/1999/xhtml><头=服务器> <标题>< /标题>< /头><身体GT; <表ID =form1的=服务器的EnableViewState =真> < DIV> < BR /> < BR /> < A HREF =Default.aspx的>获取请求< / A> < BR /> < BR /> < ASP:面板=服务器ID =pnlDynamic的EnableViewState =真/> < BR /> < BR /> < ASP:DropDownList的=服务器ID =ddlFixed/> < ASP:按钮=服务器ID =BTN文本=回传/> < / DIV> < /表及GT;< /身体GT;< / HTML>解决方案
我已经找到了解决方案,让我继续视图状态在回传。这是调用ItemCollection的TrackViewState。
CTYPE(ddl.Items,IStateManager).TrackViewState()感谢所有您的帮助。
这是工作的解决方案:
<%@页面语言=VB%GT;<脚本=服务器> 保护小组Page_Init(BYVAL发件人为对象,BYVAL E上System.EventArgs) 如果没有Page.IsPostBack然后 ddlFixed.Items.Add(新列表项(12,13)) ddlFixed.Items.Add(新建列表项(14,15)) 万一 昏暗我作为整数 对于i = 0至3 朦胧DDL作为新的DropDownList ddl.ID =ddlPage与&一世 CTYPE(ddl.Items,IStateManager).TrackViewState() 如果没有Page.IsPostBack然后 ddl.Items.Add(新列表项(12,13)) ddl.Items.Add(新建列表项(14,15)) 万一 pnlDynamic.Controls.Add(DDL) 昏暗txtBx作为新文本框 txtBx.ID =txtPage与&一世 如果没有Page.IsPostBack然后 txtBx.Text =preSET 万一 pnlDynamic.Controls.Add(txtBx) 下一个 结束小组< / SCRIPT>< HTML的xmlns =http://www.w3/1999/xhtml><头ID =头像1=服务器> <标题>< /标题>< /头><身体GT; <表ID =form1的=服务器> < DIV> < BR /> < BR /> < A HREF =Default.aspx的>获取请求< / A> < BR /> < BR /> < ASP:面板=服务器ID =pnlDynamic/> < BR /> < BR /> < ASP:DropDownList的=服务器ID =ddlFixed/> < ASP:按钮=服务器ID =BTN文本=回传/> < / DIV> < /表及GT;< /身体GT;< / HTML>I have a page that contains some dynamically created controls (TextBox and DropDownList). When a postback occurs, the TextBoxes keep their values, but the DropDownLists lose their ListItems. This is quite confusing, since the page level DropDownList also keeps its ListItems. Can anyone see what's wrong with the code below?
Any help in solving this issue would be greatly appreciated.
<%@ Page Language="VB"%> <script runat="server"> Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) If Not Page.IsPostBack Then ddlFixed.Items.Add(New ListItem("12", "13")) ddlFixed.Items.Add(New ListItem("14", "15")) End If Dim i As Integer For i = 0 To 3 Dim ddl As New DropDownList ddl.ID = "ddlPage" & i ddl.EnableViewState = True If Not Page.IsPostBack Then ddl.Items.Add(New ListItem("12", "13")) ddl.Items.Add(New ListItem("14", "15")) End If pnlDynamic.Controls.Add(ddl) Dim txtBx As New TextBox txtBx.ID = "txtPage" & i If Not Page.IsPostBack Then txtBx.Text = "Preset" End If pnlDynamic.Controls.Add(txtBx) Next End Sub </script> <html xmlns="www.w3/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server" enableviewstate="true"> <div> <br /> <br /> <a href="Default.aspx">Get-Request</a> <br /> <br /> <asp:Panel runat="server" ID="pnlDynamic" EnableViewState="true" /> <br /> <br /> <asp:DropDownList runat="server" ID="ddlFixed" /> <asp:Button runat="server" ID="btn" Text="Postback"/> </div> </form> </body> </html>解决方案
I have found the solution that will allow me to keep the viewstate across postbacks. It's to call TrackViewState of the ItemCollection.
CType(ddl.Items, IStateManager).TrackViewState()Thanks to all for your help.
This is the working solution:
<%@ Page Language="VB"%> <script runat="server"> Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) If Not Page.IsPostBack Then ddlFixed.Items.Add(New ListItem("12", "13")) ddlFixed.Items.Add(New ListItem("14", "15")) End If Dim i As Integer For i = 0 To 3 Dim ddl As New DropDownList ddl.ID = "ddlPage" & i CType(ddl.Items, IStateManager).TrackViewState() If Not Page.IsPostBack Then ddl.Items.Add(New ListItem("12", "13")) ddl.Items.Add(New ListItem("14", "15")) End If pnlDynamic.Controls.Add(ddl) Dim txtBx As New TextBox txtBx.ID = "txtPage" & i If Not Page.IsPostBack Then txtBx.Text = "Preset" End If pnlDynamic.Controls.Add(txtBx) Next End Sub </script> <html xmlns="www.w3/1999/xhtml"> <head id="Head1" runat="server"> <title></title> </head> <body> <form id="form1" runat="server" > <div> <br /> <br /> <a href="Default.aspx">Get-Request</a> <br /> <br /> <asp:Panel runat="server" ID="pnlDynamic" /> <br /> <br /> <asp:DropDownList runat="server" ID="ddlFixed" /> <asp:Button runat="server" ID="btn" Text="Postback"/> </div> </form> </body> </html>
更多推荐
动态创建的DropDownList失去对回发ListItems的
发布评论