无法访问通过javascript动态创建的浏览器控件

无法访问通过javascript动态创建的浏览器控件,javascript,asp.net,Javascript,Asp.net,我已经通过javascript动态创建了控件(文本框和复选框)。 i、 e每次单击addrow按钮,都会生成一个新行 但是我无法通过代码隐藏访问新创建的元素 请协助:) -----------aspx文件--------------- 在HTML表中添加/删除动态行 <script language="javascript"> function addRow(tableID) { var table = document.getElementById(tab

我已经通过javascript动态创建了控件(文本框和复选框)。 i、 e每次单击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>

函数addRow(tableID){
var table=document.getElementById(tableID);
var rowCount=table.rows.length;
var row=table.insertRow(rowCount);
var cell1=行插入单元格(0);
var element1=document.createElement(“输入”);
element1.type=“复选框”;
element1.name=“chkbox[]”;
单元格1.附加子元素(元素1);
var cell2=行插入单元格(1);
cell2.innerHTML=rowCount+1;
var cell3=行插入单元格(2);
var element2=document.createElement(“输入”);
element2.type=“text”;
element2.name=“txtbox[]”;
第三单元附属物(第二单元);
}

您无法从代码隐藏访问控件值,因为这些控件不是服务器控件。具有属性runat=“server”的控件只能从代码隐藏访问


作为一种解决方法,您可以使用AJAX将值发送到web服务,并从那里进行处理。

尽管无法通过
ID
使用java脚本获取动态创建的控件

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

我想你可以进入
Request.Forms
collection

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

但是由
java脚本创建的控件
需要指定
name
属性

参考资料:-

另一环节

编辑-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"];

虽然无法通过ID获取使用java脚本动态创建的控件
请阅读属性OP正在使用java脚本而不是代码隐藏创建控件。请使用
请求检查其代码。表单[]
。它给出空值。不working@Murali您正在查看哪个事件???
Request.Forms
在整个页面生命周期内都可以访问,无论它是什么事件:错。如果它们是通过POST请求提交的,则可以访问它们,但由于它们不在Viewstate中,因此无法自动分配给服务器端控件。使用Request.Form[“controlname”]访问发布的数据。