Мне нравится знать, как получить ClientID/UniqueID элемента управления внутри элемента управления ViewView Элемент EditItemTemplate, а при изменении элемента DetailsViews в режиме редактирования и DetailsView находится внутри AJAX UpdatePanel. Без UpdatePanel во время PostBack я могу получить контроль ClientID, но теперь с UpdatePanel.Получить элементы управления ClientID/UniqueID между DetailsView и 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 is null:
void DetailsView1_ModeChanged(object sender, EventArgs e)
{
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
var chkbox = DetailsView1.FindControl("chkboxTest"); // <== is null
}
}
Возможно, я использую неправильное событие? Кто-нибудь может дать мне совет об этом? Благодарю.
Это опечатка в ваше событие ModeChanged в FindControl, оно ищет chkxboxTest ...? Если это ваш код, это может быть проблемой. – Mantorok
@ Манторок. извините опечатка. Но все равно null. – robertpnl
Итак, попробуйте строки [0] .Cells [0] .FindControl. – Mantorok