自动化控件创建 C# Visual Studio

贾诺德

我正在为用户输入制作一个表单,每次用户点击一个按钮时,都会添加一个新的文本框供他们输入。

我能够毫无问题地创建文本框,但我无法命名它们。他们都需要有不同的名字(否则他们会互相覆盖)所以我想做这样的事情:

string strName = "txt"+counter.toString(); 
HtmlGenericControl gc = new HtmlGenericControl("li");

InputList.Controls.Add(gc);

TextBox strName = new TextBox();

strName.Text = "hello world"+counter.toString();
gc.addControls.Add(strName);

Vs 不喜欢这样,但我需要能够提供许多自动生成的文本框。关于如何解决这个问题的任何建议,或者你能推荐另一种方式吗?

乔治·琼德龙皮拉斯

你为什么需要string strName = "txt"+counter.toString();

您可以尝试像这样更改Text属性,而不是更改TextBoxes 的ID属性:

HtmlGenericControl gc = new HtmlGenericControl("li");
gc.ID = "li"+counter.toString(); //This is needed to take it later
InputList.Controls.Add(gc);
TextBox strName = new TextBox();
strName.Text = "txtbox"+counter.toString();
gc.addControls.Add(strName);

然后,如果您想从这些TextBoxes 中获取值,您应该使用:

TextBox txtbox = (TextBox)(InputList.FindControl("li1").FindControl("txtbox1"));  
var inputText = txtbox.Text; //This contains the text inside the `TextBox`

编辑

正如 Vilx 所提到的,每次你点击添加按钮都会发生一个新的回发,所以你必须想办法TextBox在回发时加载已经创建的es。最好的方法是input在前端完全使用 JavaScript/JQuery动态创建字段,并在表单提交时将它们发送回服务器。

这是一个示例:如何使用 javascript 在 asp.net 网络表单上动态添加文本框

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章