我已经通过javascript动态创建了控件(文本框和复选框)。 即每次单击addrow按钮时都会生成一个新行。
但是我无法通过后面的代码访问新创建的元素。
请协助:)
----------- aspx文件--------------- 在HTML表格中添加/删除动态行
<script language="javascript">
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
element1.name = "chkbox[]";
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
cell2.innerHTML = rowCount + 1;
var cell3 = row.insertCell(2);
var element2 = document.createElement("input");
element2.type = "text";
element2.name = "txtbox[]";
cell3.appendChild(element2);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" value="Add Row" onclick="addRow('dataTable')" />
<table id="dataTable" width="350px" border="1">
<tr>
<td>
<input type="checkbox" name="chk" />
</td>
<td>
<input type="text" />
</td>
</tr>
</table>
</div>
</form>
</body>
答案 0 :(得分:1)
虽然不可能通过ID
使用java脚本来获取动态创建的控件。
但是我可以在通过java脚本创建控件时使用控件的name
属性。
我认为你可以进入Request.Forms
集合。
id属性仅标识DOM中的标记。 name property允许将标记作为表单的一部分发回。 ASP.NET控件或带有runat=server
的HTML元素会自动获取分配的名称和标识属性。
但是java-script
创建的控件需要指定name
属性。
参考文献: - Form Post Values using plain html controls in ASP.NET web forms
http://www.quepublishing.com/articles/article.aspx?p=28493
假设我创建了input type='text' name='companyname'
然后我可以得到如下的值
string companyname = Request.Form["companyname"];
假设我正在创建一个有问题的输入
var element2 = document.createElement("input");
element2.name='companyname'
将此元素添加到表单
cell3.appendChild(element2);
你可以把它作为背后的代码
string companyname = Request.Form["companyname"];
答案 1 :(得分:0)
您无法从后面的代码访问控制值,因为它们不是服务器控件。具有 runat =“server”属性的控件只能从后面的代码中访问。
作为一种变通方法,您可以使用AJAX将值发送到Web服务,然后您可以从那里处理它。