Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何自动添加文本框_C#_Javascript_Jquery_Asp.net - Fatal编程技术网

C# 如何自动添加文本框

C# 如何自动添加文本框,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我有这8个文本框,但当我开始觉得我的页面非常混乱时。所以,我在想,如何实现一个按钮,可以添加文本框时,用户点击它。这里有人有什么想法或解决办法来帮助我吗?我将不胜感激。谢谢。 如果考虑使用jQuery,事情可能非常简单: <div id="text_box_container"> </div> <input type="button" value="text box inserter" id="text_box_inserter" /> 现在是java

我有这8个文本框,但当我开始觉得我的页面非常混乱时。所以,我在想,如何实现一个按钮,可以添加文本框时,用户点击它。这里有人有什么想法或解决办法来帮助我吗?我将不胜感激。谢谢。

如果考虑使用jQuery,事情可能非常简单:

<div id="text_box_container"> </div>

<input type="button" value="text box inserter" id="text_box_inserter" />

现在是javascript/jquery部分

$('#text_box_inserter').click(function(){
    $('#text_box_container').append('<input type="text" />');
})
$('#文本框_插入器')。单击(函数(){
$('#文本框\容器')。追加('');
})

这将创建一个文本框,并使用
id=“divFirstName”
将其添加到
div
div
应该有
runat=“server”

TextBox tbFirstName = new TextBox();
tbFirstName.ID = "tbFirstName";
tbFirstName.Attributes.Add("Name", "tbFirstName");

divFirstName.Controls.Add(tbFirstName);
然后只需将代码放在单击事件中。
(我知道我的命名很糟糕,纯粹是为了更好地理解。)

最好的方法可能是将两个文本框都放在用户控件中。然后,该用户控件可以封装属于这两个文本框的所有逻辑;它可以计算两个值之间的差异,例如,封装两个值的所有验证等。您只需写入此位一次

在页面中添加占位符;给它一个“DynamicControlHolder”或类似的id。您还需要一个隐藏字段DynamicControlCount,您可以使用它来存储添加的动态控件的数量

两个最重要的概念是:

  • 在当时添加
  • 试试看 id在回发之间,因此ASP.Net会自动填充这些值 从ViewState为您创建。否则,您将不得不处理此问题 你自己
因此,当页面第一次加载时,您可以在page_Init中执行如下操作,例如:

{
  MyUserControl control = Page.LoadControl("~/path_to_my_usercontrol");
  control.ID = "MyUserControl1";
  DynamicControlCount.Value = "1";

  DynamicControlHolder.Controls.Add(control);
}
如果页面上有一个按钮“添加控件”,则在单击处理程序中:

{
  int controlCount = Convert.ToInt32(DynamicControlCount.Value);
  controlCount++;

  //This section will add as many controls as i.
  for(i = 1; i <= controlCount; i++)
  {
      MyUserControl control = Page.LoadControl("~/path_to_my_usercontrol");
      control.ID = String.Format("MyUserControl{0}", i);          
      DynamicControlHolder.Controls.Add(control);           
  }

  DynamicControlCount.Value = Convert.ToString(controlCount); //Note this is problematic
}
{
int controlCount=Convert.ToInt32(DynamicControlCount.Value);
controlCount++;
//本节将添加与我一样多的控件。

对于(i=1;我可能是的副本。或者你想要它服务器端吗?然后看一个例子。试着看这里:如果可能的话,我想要按钮生成两个文本框。1表示费用类型,另1表示价格。TQ你想要用javascript完成吗?或者你能接受回发并使其成为服务器端吗?我更喜欢回发使用javascript标记,因为大多数自动生成文本框都使用java。谢谢。但是我能知道,在click event中放什么吗?我不确定我是否理解你的意思。如果你有一个按钮应该添加更多文本框,那么只需将上面的代码放在按钮的click event方法中。如果我现在把你搞糊涂了,请告诉我,我会告诉你编辑我的原始答案。哈哈。我想,也许我应该睡一觉。我只是花了8个小时在我的笔记本电脑上主演《无厘头》。但无论如何,谢谢!一旦我尝试编码,就会更新:)