DetailsviewコントロールのEditItemTemplate要素内のコントロールのClientID/UniqueIDを取得する方法と、DetailsViewsが編集モードに変更されてDetailsViewがAJAXUpdatePanel内にある場合を知りたいです。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にはチェックボックスコントロールが含まれています。したがって、Detailsviewが編集モードに変更されているときにこのチェックボックスのClientIDを取得しようとしています。Javascriptを処理するためにこの値が必要です。
イベントChangingMode/ChangedModeのキャッチは機能しません。chkboxがnullです:
void DetailsView1_ModeChanged(object sender, EventArgs e)
{
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
var chkbox = DetailsView1.FindControl("chkboxTest"); // <== is null
}
}
たぶん私は間違ったイベントを使用していますか?誰かが私にこれについてのヒントを与えることができますか?ありがとう。