Мне нравится знать, как получить ClientID / UniqueID элемента управления внутри элемента EditItemTemplate элементов управления Detailsview и когда 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. Поэтому я пытаюсь получить ClientID этого флажка, когда Detailsview переключается в режим редактирования. Мне нужно это значение для обработки Javascript.
Перехват событий ChangingMode / ChangedMode не работает; chkbox пуст:
void DetailsView1_ModeChanged(object sender, EventArgs e)
{
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
var chkbox = DetailsView1.FindControl("chkboxTest"); // <== is null
}
}
Может быть, я использую неправильное событие? Кто-нибудь может дать мне совет по этому поводу? Спасибо.