这是一个asp:TextBox
的示例 <asp:UpdatePanel ID="UpdatePanel" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:TextBox runat="server" ID="MyBox" />
</ContentTemplate>
</asp:UpdatePanel>
在我背后的代码中,我从数据库中获取了大量数据,并且我想创建相应的asp:TextBox
文本框。
是否可以从代码中添加UpdatePanel asp:TextBox
?
背后的代码:
protected void Page_Load(object sender, EventArgs e)
{
int numberOfItems = AccountsBank.Bank_DAL.GetNumberOfActiveAccount();
// create 'numberOfItems' asp:TextBox
}
请注意,我不是在寻找TextArea,我需要的是多个asp:TextBox
。
非常感谢您的帮助
答案 0 :(得分:3)
创建控件程序的问题是你需要确保每次回发都创建它们。有了这个说,更容易和更坚实的方式是使用转发器。然后,您可以根据帐户数重复文本框的数量。像这样:
<强>标记:强>
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Repeater ID="myRep" runat="server">
<ItemTemplate>
<asp:TextBox runat="server" ID="MyBox" />
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
Code bebind:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
int numberOfItems = AccountsBank.Bank_DAL.GetNumberOfActiveAccount();
myRep.DataSource = Enumerable.Range(0, numberOfItems).ToList();
myRep.DataBind();
}
}
参考:
答案 1 :(得分:1)
为了以编程方式将控件添加到页面,必须有一个用于新控件的容器。例如,如果要创建表行,则容器就是表。如果没有明显的控制来充当容器,您可以使用PlaceHolder或Panel Web服务器控件。
<asp:PlaceHolder ID="container" runat="server" /
&GT;
此容器的名称为&#39; container&#39; ,您可以在后面的代码中调用。
foreach(DataRow dataRow in dataTable.Rows)
{
TextBox tb = new TextBox();
tb.Name = "tb_" + dataRow.Id;
tb.Text = dataRow.Content;
container.Controls.Add(tb);
}