0

我已经通过 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')" />&nbsp;
    <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>
4

2 回答 2

1

虽然不可能使用 java-script by 获取动态创建的控件ID

但是我认为您可以name在通过 java 脚本创建控件时使用控件的属性。

我认为你可以Request.Forms收集。

id 属性仅标识 DOM 中的标记。name 属性允许将标记作为表单的一部分回发。ASP.NET 控件或带有 的 HTML 元素runat=server会自动获取分配的 name 和 id 属性。

但是您创建的控件java-script需要name指定属性。

参考:-在 ASP.NET Web 表单中使用纯 html 控件形成 Post Values

另一个链接

http://www.quepublishing.com/articles/article.aspx?p=28493

编辑-1

假设我创建了一个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"];
于 2013-10-24T10:28:58.810 回答
0

您无法从后面的代码中访问控件值,因为它们不是服务器控件。具有属性runat="server"的控件只能从后面的代码中访问。

作为一种解决方法,您可以使用 AJAX 将值发送到 Web 服务,然后您可以从那里处理它。

于 2013-10-24T10:25:48.880 回答