在C#Visual Studio中调用动态创建的文本框

时间:2017-05-24 15:02:48

标签: c# asp.net

在这篇文章中,我想弄清楚如何在C#Visual Studio中创建动态创建的文本框。

Adding additional textboxes to aspx based on xml

但是,当我尝试在我的代码中稍后调用这些动态创建的文本框的ID以确定用户输入的文本时,我收到一条错误,指出这些ID在当前上下文中不存在。有谁知道我怎么称呼这些?

2 个答案:

答案 0 :(得分:1)

归功于Adding additional textboxes to aspx based on xml

这是我的整个代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm15.aspx.cs" Inherits="WebApplication4.WebForm15" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <div id="divToAddTo" runat="server" />
        <asp:Button runat="server" ID="BtnGetValues" Text="GetValues" OnClick="BtnGetValues_Click" />
    </form>
</body>
</html>

这是aspx:

String.split

答案 1 :(得分:0)

想出来!!!这是我在网上搜索了几个小时后发现的

解决方案: 使用动态控件时,必须记住它们只存在于下一个回发之前.ASP.NET不会重新创建动态添加的控件。如果需要多次重新创建控件,则应在PageLoad事件处理程序中执行控件创建(目前您只是第一次使用Condition:!IsPostabck创建TextBox)。这样做的另一个好处是允许您在动态控件中使用视图状态。即使视图状态通常在Page.Load事件之前恢复,如果在PageLoad事件的处理程序中创建控件,ASP.NET将在PageLoad事件处理程序结束后应用它具有的任何视图状态信息。

所以,删除条件:!IsPostback,这样每次页面加载时,TextBox控件也会被创建。在PageLoad处理程序完成后,您还将看到保存文本状态框。 [显然你没有禁用ViewState !!! ]

示例:

protected void Page_Load(object sender,EventArgs e) {

TextBox txtBox = new TextBox();
// Assign some text and an ID so you can retrieve it later. 

txtBox.ID = "newButton";
PlaceHolder1.Controls.Add(txtBox);

} 现在运行它之后,在文本框中键入任何内容,看看当您单击任何导致回发的按钮时会发生什么。文本框仍然保持其状态!!!