动态重复表单元素

时间:2011-12-30 00:48:08

标签: c# asp.net webforms

我构建了一个在线简历应用程序,允许用户添加由多个文本框和标签组成的新教育部分。

根据用户是否点击[添加另一个]按钮,动态创建表单元素并读取它们的最佳方法是什么。

3 个答案:

答案 0 :(得分:2)

1)服务器端:在您的asp.net按钮单击事件中,动态创建所需的控件(文本框,下拉等...)并将其添加到像Panel这样的变形器中。

2)客户端:使用javascript创建元素并附加到现有容器(div)。在这种方法中,您将保存服务器往返,因为您在客户端进行此操作。

这是一个使用jquery的javascript示例,它会给你一个想法。

<强> HTML

<div id="divContainer">    
   Education 1 <input id="txt1" type="text" class="txtBox"/>
</div>
<input id="btn1" type="button" value="Add Another" />

<强>的Javascript

var counter=1;
$("#btn1").click(function(){
    counter++;    
    $("#divContainer").append("<br/> Education "+counter + " <input type='text' id='txt"+counter+"' class='txtBox' />");              
 });

以下是工作示例:http://jsfiddle.net/huYMT/13/

答案 1 :(得分:1)

不幸的是,我不知道最好的方法,但我可以告诉你我以前在网页表格中做了什么。

我制作了一个PlaceHolder,我可以将其转移到飞行类型的控件中。我制作了一个可以一次又一次重复具有公共属性的UserControl。我在PlaceHolder周围包装了一个UpdatePanel,并附加了一个绑定到UpdatePanel的click事件,因此用户可以获得AJAX体验。

这是代码的快速总结版本。如果你愿意,我可以给你全部资料。让我知道。

<script runat="server">
  void aspx_Init(object sender, EventArgs e)
  {
    AddCreditCardReceiptButton.Click += new EventHandler(AddCreditCardReceiptButton_Click);
  }
  void AddCreditCardReceipt()
  {
    AddCreditCardReceipt(this.ID + "_" + Guid.NewGuid().ToString("N").Substring(0, 5));
  }
  void AddCreditCardReceiptButton_Click(object sender, EventArgs e)
  {
    AddCreditCardReceipt();
    CreditCardReceipt lastAdded = (CreditCardReceipt)CreditCardReceiptPH.Controls[CreditCardReceiptPH.Controls.Count - 1];
    lastAdded.ContainerStyle = "display:none";
    ScriptManager.RegisterStartupScript(lastAdded, typeof(CreditCardReceipt), lastAdded.ClientID,
        "$('#CreditCardReceipt_" + lastAdded.ClientID + "').toggle(500);", true);
  }
</script>
<asp:UpdatePanel runat="server" id="CreditCardReceiptUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
    <asp:PlaceHolder ID="CreditCardReceiptPH" runat="server" /> 
     <asp:Button runat="server" ID="AddCreditCardReceiptButton" CausesValidation="false" Text="(+) Add Credit Card Receipt" /></div>
</ContentTemplate>

答案 2 :(得分:1)

我更喜欢为教育部门创建一个用户控件。

如果您点击添加按钮,按钮的点击事件可以动态添加新用户

用户界面中的

控制。