我知道网上有很多关于此的帖子,但我似乎无法找到任何针对我的特定问题!
我有一个使用转发器填充的动态表。
代码是:
<asp:Repeater ID="rptPending" runat="server">
<HeaderTemplate>
<table id="tblPending" cellpadding="0" cellspacing="0" border="0" class="display">
<thead>
<tr>
<th>Company Name</th>
<th>Telephone</th>
<th>Fax Number</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td runat="server">
<asp:TextBox ID="a" runat="server" TextMode="MultiLine" Rows="1"
onChange="__doPostBack($(this).attr('name'),$(this).parent().attr('id'));"
Text='<%# Eval("_companyName")%>'></asp:TextBox>
</td>
<td runat="server">
<asp:TextBox ID="b" runat="server" TextMode="MultiLine" Rows="1"
onChange="__doPostBack($(this).attr('name'),$(this).parent().attr('id'));"
Text='<%# Eval("_telephone")%>'></asp:TextBox>
</td>
<td runat="server">
<asp:TextBox ID="c" runat="server" TextMode="MultiLine" Rows="1"
onChange="__doPostBack($(this).attr('name'),$(this).parent().attr('id'));"
Text='<%# Eval("_faxNo")%>'></asp:TextBox>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody> </table>
</FooterTemplate>
</asp:Repeater>
一旦使用来自数据源的数据填充此表,jquery脚本将遍历每个表格单元格并相应地编辑id。 cell_0_0,cell_0_1,cell_0_2等。
现在,当这些文本区域上的文本发生更改时,将启动回发,__ EVENTTARGET为textarea ID,__ EVENTARGUMENT为表格单元格(父级)ID。
这些发送到服务器端没问题。我遇到的问题是在文本区域内获取文本......
我尝试使用FindControl(“cell_0_0”)添加控件;返回null。然后我发现FindControl()函数不是递归的,所以我从网上复制了一个递归函数......它仍然失败!
基本上我需要做的就是获取值(innerText或InnerHTML)。我尝试过使用Control,HtmlControl,HtmlTableRow和HtmlTextArea。
我似乎无法获得价值。我曾经尝试过在前面提到过的复制,但控件甚至没有注册。我很困惑。
请帮助!
由于
Alex
答案 0 :(得分:4)
这通常是一个问题,因为控件的创建时间,当你在转发器内创建控件时,时间更加复杂,因为转发器必须首先完全绑定,然后搜索控件。 / p>
在我的程序中为了避免所有这些我只是从表单中获取已发布的值而我实际上并不首先搜索找到控件。因此,只需从Request.Form中获取您发布的值,然后继续。
Request.Form
所有帖子数据都存在于Request.Form上,因此您可以轻松获得所需的数据,或找到您需要的数据。只是注意,要使用表单获取值,请使用UniqueID,而不是ClientID。更好地从您的自定义名称ID中获取值。