我构建了一个在线简历应用程序,允许用户添加由多个文本框和标签组成的新教育部分。
根据用户是否点击[添加另一个]按钮,动态创建表单元素并读取它们的最佳方法是什么。
答案 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)
我更喜欢为教育部门创建一个用户控件。
如果您点击添加按钮,按钮的点击事件可以动态添加新用户
用户界面中的控制。