我想知道如何在 Detailsview 控件 EditItemTemplate 元素中获取控件的 ClientID/UniqueID 以及何时将 DetailsViews 更改为编辑模式并且 DetailsView 在 AJAX UpdatePanel 内。如果没有 UpdatePanel,在 PostBack 期间我可以获得 ClientID 的控制权,但现在有了 UpdatePanel。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="SqlDataSource1" AllowPaging="true" AutoGenerateEditButton="true">
<Fields>
<asp:TemplateField>
<EditItemTemplate>
<asp:CheckBox runat="server" ID="chkboxTest" Text="CHECKBOX" />
</EditItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
</ContentTemplate>
</asp:UpdatePanel>
如您所见,EditItemTemplate 包含一个 Checkbox 控件。因此,当 Detailsview 更改为编辑模式时,我试图获取此复选框的 ClientID。我需要这个值来处理 Javascript。
捕捉事件ChangingMode/ChangedMode 不起作用;chkbox 为空:
void DetailsView1_ModeChanged(object sender, EventArgs e)
{
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
var chkbox = DetailsView1.FindControl("chkboxTest"); // <== is null
}
}
也许我使用了错误的事件?有人可以给我一个提示吗?谢谢。