在这篇文章中,我想弄清楚如何在C#Visual Studio中创建动态创建的文本框。
Adding additional textboxes to aspx based on xml
但是,当我尝试在我的代码中稍后调用这些动态创建的文本框的ID以确定用户输入的文本时,我收到一条错误,指出这些ID在当前上下文中不存在。有谁知道我怎么称呼这些?
答案 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);
} 现在运行它之后,在文本框中键入任何内容,看看当您单击任何导致回发的按钮时会发生什么。文本框仍然保持其状态!!!