我正在嘗試創建一個從空白處開始的網頁。隨着每個按鈕按下新的文本框添加刪除按鈕,以刪除他們想要的任何行。這很好。問題是我無法訪問使用C#動態創建的控件。如何從後面的代碼訪問這些動態創建的控件?
在下面的代碼中,我將它們設置爲<input
我也試過使用<asp:Textbox
,但它也沒有工作。 Request.Form["txtItemName1"]
總是返回一個空白字符串,我不能在CS文件中執行txtItemName1.Text
,因爲文本框還不存在。
我想如何訪問C#端的文本框?
有動態創建控件的更好方法嗎?
<!-- jQuery -->
<script type="text/javascript">
$(window).load(function() {
$(document).ready(function() {
var counter = 1;
$(document).on('click', '.removeButtonByID', function() {
var _name = this.name.replace("btnRemove", "");
if (confirm('Are you sure you want to remove line ' + _name + '? This cannot be undone.')) {
$("#TextBoxDiv" + _name).remove();
}
});
$("#addButton").click(function() {
$('<div />', { 'id': 'TextBoxDiv' + counter }).html(
$('<label />').html('')
)
.append($('<div class="col-sm-1" style="width: 200px; padding-left: 7px; padding-right: 0px;"><input type="text" class="form-control" placeholder="Item Name" runat="server">').attr({ 'id': 'txtItemName' + counter, 'name': 'txtItemName' + counter }))
.append($('<div class="col-sm-1" style="width: 100px; padding-left: 7px; padding-right: 0px;"><input type="text" class="form-control" placeholder="D/I" runat="server">').attr({ 'id': 'txtDI' + counter, 'name': 'txtDI' + counter }))
.append($('<div class="col-sm-1"><label class="checkbox-inline"><input type="checkbox" value="">Subtotal</label>').attr({ 'id': 'subtotal' + counter, 'name': 'chkSubTotal' + counter }))
.append($('<br />'))
.append($('<button type="button"><span class="glyphicon glyphicon-minus"></span></button>').attr({ 'name': 'btnRemove' + counter, 'class': 'btn btn-danger removeButtonByID' }))
.appendTo('#TextBoxesGroup')
counter++;
});
});
});
</script>
<!-- HTML -->
<div id='TextBoxesGroup'>
<!-- Dynamically added textboxes here -->
</div>
<hr />
<button type="button" class="btn btn-default" id='addButton'>
<span class="glyphicon glyphicon-plus"></span>
</button>
當您嘗試使用asp:Textbox時,您是否也包含runat =「server」? – Vahlkron
你在ASP.net MVC中使用C#還是僅僅使用ASP.Net? – cDima
是的,我做到了。我甚至手動在頁面上放置一個asp:Textbox來查看我是否可以訪問它並且我可以。只有動態控制才能避開我。 – duckwizzle