asp.net - 动态创建 ASP.NET 表单元素

标签 asp.net vb.net web-applications dynamic webforms

我正在尝试构建一个在使用时自动生成的表单。我创建了一个非常简单的示例,与我下面尝试做的事情松散相关,但它演示了问题。

用户在文本框中键入一个单词,单击按钮,然后一个新的文本框将加载到面板中,其中包含用户输入的原始文本框中的值。然后,用户应该能够输入其他/相同的内容,并通过单击按钮创建另一个文本框,基本上允许 0,1,..,n 文本框出现在表单上的“txtFeeder”文本框上方。

问题是,每次单击该按钮时,它都不会添加新控件,它似乎只是更新已使用新(增量)ID 创建的控件。我不确定我是否做错了什么,或者我想做的事情是否无法完成(我觉得很难相信)?

这是 .aspx...

<form id="frmMain" runat="server">
    <asp:Panel ID="pnlAdded" runat="server"></asp:Panel>
    <asp:TextBox ID="txtFeeder" runat="server"></asp:TextBox>
    <asp:Button ID="btnFeedPanel" runat="server" Text="Button" />
</form>

...这是 .aspx.vb...

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        ViewState.Add("elementCount", 0)
    End If
End Sub
Protected Sub btnFeedPanel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFeedPanel.Click
    ViewState("elementCount") += 1
    Dim txtNew = New TextBox
    txtNew.ID = "txtElement" & ViewState("elementCount")
    txtNew.Text = txtFeeder.Text
    pnlAdded.Controls.Add(txtNew)
    txtNew = Nothing
End Sub

谢谢

最佳答案

在回发时,您需要从 ViewState 显式重新生成按钮(您检查 View 状态中添加的计数器并重新生成添加的按钮) - 否则它们将消失(并且只有原始的按钮会出现,因为您'正在经历)。

看看this question ,这个家伙正在尝试实现与您正在寻找的极其相似的 smt(维护一堆动态按钮并在回发时重新生成它们)。

关于asp.net - 动态创建 ASP.NET 表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1771893/

相关文章:

jquery - 无法在页面卸载事件中调用 post 到 asp.net 页面

vb.net - WP7 MVVM 如何从 ViewModel 调用 me.setfocus()?

java - Eclipse Java 实用程序项目和多个 Web 应用程序

javascript - 使用 Ant 更新配置文件

java - 无法启动服务 jboss.deployment.unit - StartException

asp.net - Silverlight 中断 JQuery 动画

asp.net - 标准 OutputCache 属性是每个用户还是每个应用程序

c# - 如何获取收件箱文件夹实例?

asp.net - 如何计算 sqldatasource 获取的行数

arrays - 调整图像大小并放置在 CrystalReports BlobField 的字节数组中