如何自动添加文本框

Posted

技术标签:

【中文标题】如何自动添加文本框【英文标题】:How to automatically add textbox 【发布时间】:2012-03-17 18:39:58 【问题描述】:

我有这 8 个文本框,但是当我开始认为它在我的页面上非常混乱时。所以,我在想如何实现一个按钮,当用户点击它时可以添加文本框。这里有没有人有想法或解决方案可以帮助我?我会很感激的。谢谢。

【问题讨论】:

Jquery - Create hidden form element on the fly 的可能重复项。还是你想要它的服务器端?然后以here 为例。 试试看这里:***.com/questions/4630095/… 如果可能的话,我希望按钮生成两个文本框。 1 表示费用类型,另外 1 表示价格。 tq 你想用javascript完成吗?或者您可以接受回发并使其成为服务器端吗? 我更喜欢回发。我使用 javascript 标签是因为大多数自动生成的文本框都使用了 java。谢谢 【参考方案1】:

执行此操作的最佳方法可能是将两个文本框都放在用户控件中。然后,此用户控件可以封装属于两个文本框的所有逻辑;它可以计算两个值之间的差异,例如,封装所有的验证等等等等。你只需要写一次!

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

两个最重要的概念是:

在right 时间添加dynamic controls 试试maintain 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("MyUserControl0", i);          
      DynamicControlHolder.Controls.Add(control);           
  

  DynamicControlCount.Value = Convert.ToString(controlCount); //Note this is problematic

控制第二部分的最简单方法是使用UpdatePanel。这样做的主要原因是,当您更新您拥有的控件计数时,您是在页面生命周期的后期执行此操作,并且在完整的回发中,该值可能不会以您期望的回发方式增加。如果整个页面不只是为了修改它的一小部分而发回,它对用户来说也看起来更好。

这些只是帮助您入门的一些想法。这种事情的一个很好的参考是在这里:

Truly Understanding Dynamic Controls

您应该阅读相关内容,因为视图状态、页面生命周期、客户端呈现和其他因素的组合使得它成为 ASP.Net 中最棘手但最有趣的技术之一

【讨论】:

【参考方案2】:

如果您考虑使用 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" />');
)

【讨论】:

【参考方案3】:

这将创建一个文本框并将其添加到带有id="divFirstName"divdiv 应该有 runat="server"

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

divFirstName.Controls.Add(tbFirstName);

然后只需将代码放在您的点击事件中。 (我知道我的命名很烂,纯粹是为了更好地理解)。

【讨论】:

谢谢。但是我可以知道,在点击事件中添加什么吗? 我不确定我理解你的意思。如果您有一个应该添加更多文本框的按钮,那么只需将上面的代码放在按钮的单击事件方法中。如果我现在让您感到困惑,请告诉我,我将编辑我的原始答案。 大声笑。我想,也许我应该睡一觉。我只是花了大约 8 个小时在我的笔记本电脑上毫无头绪地主演。但无论如何,谢谢!一旦我尝试了你的编码就会更新:)

以上是关于如何自动添加文本框的主要内容,如果未能解决你的问题,请参考以下文章

java如何制作个向网页文本框中自动填写数据

追加文本时如何防止文本框自动滚动?

HTML 表格中的文本框:如何自动调整大小?

#Python恶搞#用Python写一个自动关机程序

MVC 5在用户ID文本框更改时自动填充电子邮件文本框

Access 2010 中的文本框自动添加注释