长话短说,对于一个旧项目,我使用了 ASP.Net 动态数据,并且可能做得很糟糕。其中一个字段模板中有多个控件,现在我需要从 FormView 的提交事件中获取一个控件的值,因为我们更改了该值的存储方式。
我可以使用 FindFieldTemplate 找到字段模板本身...但我不知道如何访问模板内部的控件。
如果不重新设计整个事情以将那个领域拉出来,我怎么能做到这一点?重新设计它可能会更正确,但这对于一个将在几个月内被废弃的网站来说是一个快速修复。
编辑:被要求显示代码,所以在这里。FormView 非常标准,只需使用 . 字段模板实际上有它自己的列表视图,我在代码隐藏中控制它的模式。但我需要获取 txtTitle 的值。
Ticket_TicketMemo.ascx:
<asp:ListView ID="lvTicketMemos" DataSourceID="ldsTicketMemo"
InsertItemPosition="FirstItem" OnLoad="lvTicketMemo_Load" runat="server">
<LayoutTemplate>
<div style="overflow:auto; height:125px; width:600px;">
<table class="ListViewTable" runat="server">
<tr id="itemPlaceHolder" runat="server" />
</table>
</div>
</LayoutTemplate>
<ItemTemplate>
<tr valign="top" class='<%# Container.DataItemIndex % 2 == 0 ? "" : "Alternate" %>'>
<td><asp:DynamicControl ID="dcType" DataField="Type" runat="server" /></td>
<td><asp:DynamicControl ID="dcMemo" DataField="Memo" runat="server" /></td>
<td><asp:DynamicControl ID="dcCreateTime" DataField="CreateTime" runat="server" /></td>
</tr>
</ItemTemplate>
<InsertItemTemplate>
<tr valign="top">
<td colspan="3">
<asp:TextBox ID="txtTitle" Width="99%" Visible="false" OnLoad="txtTitle_Load" runat="server" /><br /><br />
</td>
</tr>
<tr valign="top">
<td colspan="3" width="600px">
<asp:TextBox ID="txtMemo" Text='<%# Bind("Memo") %>' Width="99%" OnLoad="txtMemo_Load" TextMode="MultiLine"
Rows="5" runat="server" />
<asp:RequiredFieldValidator ID="rfvMemo" Text="Must enter notes" ControlToValidate="txtMemo" runat="server" />
</td>
</tr>
</InsertItemTemplate>