如何在c#中使用简单的for循环动态生成标签和文本框
本文关键字:动态 循环 标签 文本 for 简单 | 更新日期: 2023-09-27 18:15:46
所以,我试图在一个按钮单击上生成两个标签和两个文本框。每次我点击按钮,它应该在屏幕上生成一组新的标签和文本框。
这里是布局
Label 1 Textbox 1 Label 2 Textbox 2 Button
每次单击按钮时,应该发生以下操作
1点击
Label 1 Textbox 1 Label 2 Textbox 2 Button
Label 3 Textbox 3 Label 4 Textbox 4
2点击
Label 1 Textbox 1 Label 2 Textbox 2 Button
Label 3 Textbox 3 Label 4 Textbox 4
Label 5 Textbox 5 Label 6 Textbox 6
我怎样才能做到这一点呢?
目前我只看到一行标签和文本框,它们可能在同一个地方被覆盖了。
这是我的代码。
button_press++;
for (int i = 0; i < button_press; i++)
{
Debug.WriteLine("Hello");
Label book_number = new Label();
book_number.Text = "Book Number";
book_number.Style["Position"] = "Relative";
book_number.Style["Top"] = "0px";
book_number.Style["Left"] = "0px";
TextBox textBox_book_number = new TextBox();
textBox_book_number.Style["Position"] = "Relative";
textBox_book_number.Style["Top"] = "0px";
textBox_book_number.Style["Left"] = "10px";
Label amount = new Label();
amount.Text = "Amount";
amount.Style["Position"] = "Relative";
amount.Style["Top"] = "0px";
amount.Style["Left"] = "30px";
TextBox textBox_amount = new TextBox();
textBox_amount.Style["Position"] = "Relative";
textBox_amount.Style["Top"] = "0px";
textBox_amount.Style["Left"] = "45px";
form1.Controls.Add(book_number);
form1.Controls.Add(textBox_book_number);
form1.Controls.Add(amount);
form1.Controls.Add(textBox_amount);
form1.Controls.Add(new LiteralControl("<br />"));
}
每次单击按钮,页面都会刷新,因此您之前创建的文本框和标签将被删除。
我建议您将文本框和标签保存在一个列表中,并在每次单击按钮时添加到集合中,然后在按钮上显示整个集合。
在按钮旁边添加一个隐藏输入,用于跟踪点击次数。将此值设置为您的变量button_press,增加并将新值设置为隐藏输入。这将增加计数,即使每次单击
最有效的方法不是服务器端,而是客户端。在第一份文件上。加载并创建标签/文本框对。
当按钮被点击时,调用.aspx中的javascript函数,它将创建标签/文本框对。
这将避免为了添加标签/文本对而多次往返服务器。
最后,我确定您想要将这些数据提交给服务器。你可以使用JSON在文本框中构建数据输入,并通过使用与服务器对话的jQuery函数点击另一个名为"提交数据"的按钮来传递所有信息,甚至使用javascript的XMLHttpRequest将数据从客户端推送到服务器。
我知道这听起来很难,但是你可以试一试。
我将按钮按下变量设置为静态,一切工作正常。关键是保持会话状态,通过使其静态,我可以实现它。