【发布时间】:2014-02-16 10:05:28
【问题描述】:
我有一种情况,用户必须在一个订单中输入多个订单行。可以是 1,也可以是 100。应通过单击小 (+) 号来添加更多订单行,这会在没有回发的情况下即时添加更多文本框。
我仅限于 ASP.NET 网络表单,最新版本。
我的初始代码:
我曾希望我能写出这样的脚本:
<script>
var count = 0;
$(document).ready(function() {
$('#moreBtn').click(function() {
addNewControl();
});
});
function addNewControl() {
var orderLineDivId = "orderlinesDiv" + count;
var orderLineTitleId = "orderlines_title" + count;
var orderLineValueId = "orderlines_value" + count;
var parent = $('#<%=OrderLinesPnl.ClientID %>');
var newCtl = '<div id="'+orderLineDivId+'">' +
'<div id="' + orderLineTitleId + '"><input type="text" /></div>' +
'<div id="' + orderLineValueId + '"><input type="text" /></div>' +
'</div>';
parent.append(newCtl);
}
</script>
然后是后面的代码:
OrderLinesPnl.FindControl("orderlinesDiv1");
不过FindControl好像需要找个控件,我加了简单的HTML元素。
我的代码:
<h3>Orderlines</h3>
<a id="moreBtn" href="#">(+)</a>
<asp:Panel runat="server" ID="OrderLinesPnl">
</asp:Panel>
<asp:Button runat="server" ID="SubmitBtn" Text="Create product" OnClick="SubmitBtn_Click"/>
所以基本上:在服务器端,我需要一种方法来迭代所有添加的控件,并检索它们的内容。
编辑:我的工作代码
<script>
var count = 0;
$(document).ready(function() {
$('#moreBtn').click(function() {
addNewControl();
});
});
function addNewControl() {
var orderLineDivId = "orderlinesDiv" + count;
var orderLineTitleId = "orderlines_title" + count;
var orderLineValueId = "orderlines_value" + count;
var parent = $('#<%=OrderLinesPnl.ClientID %>');
var newCtl = '<div id="'+orderLineDivId+'">' +
'<div><input id="' + orderLineTitleId + '" name="' + orderLineTitleId + '" type="text" /></div>' +
'<div><input id="' + orderLineValueId + '" name="' + orderLineValueId + '" type="text" /></div>' +
'</div>';
parent.append(newCtl);
count++;
}
</script>
然后我可以从this.Request.Form;获取值
【问题讨论】:
标签: c# asp.net webforms postback