タブクライアントサイドを閉じるためのAjax Control Toolkitカスタムタブのエクステンダ
-
18-09-2020 - |
質問
Ajax Control Toolkit TabPanel
を変更できるAjax Control Extenderを作成しようとしているので、Cliencedをクリックすると、クライアントサイドスクリプトを使用してタブヘッダーを非表示にします(ポストバックなしで)。 )。タブが閉じられたときにも呼ばれるOnClientClose関数を指定できるようになりたいです。
私はASP制御エクステンダに新しい、そしてこれまでのところ、私は[チュートリアル]( http://www.asp.net/ajax/tutorials/creating-a-custom-ajax-control-toolkit-control-extender-cs <カスタムエクステンダを作成するためのASP.NETサイトで、「カスタムAJAXコントロールツールキットコントロールエクステンダの作成」)を参照してください。私は私のExtenderをTabPanel
と呼びました、そして私のExtenderプロジェクトはビルドされます。私はそのようなテストWebページを設定しました:
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" />
<asp:TabContainer ID="TabContainer1" runat="server">
<asp:TabPanel ID="TabPanel0" runat="server">
<HeaderTemplate>Tab 0</HeaderTemplate>
<ContentTemplate>Hello!</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel ID="TabPanel1" runat="server">
<HeaderTemplate>Tab 1</HeaderTemplate>
<ContentTemplate>Goodbye!</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
<cc1:ClosableTabPanelExtender ID="ClosableTabPanelExtender1" runat="server"
TargetControlID="TabPanel1" />
.
Ajaxツールキットのソースコードを持っており、タブコントロールのソースを見て、部分的に理解しています。私はまた、主に Matt Berseth's extenders とDan Wahlinからのもの。
解決
私はやっと私が必要なものを考え出した。解決策に興味がある人のために:
-
TabPanelコントロールを拡張するために、私のExtenderのサーバーコード(
OnResolveControlID
)でClosableTabPanelExtender.cs
メソッドをオーバーライドすることによって投稿したエラーを回避しなければなりませんでした。protected override void OnResolveControlID(ResolveControlEventArgs e) { // Get a reference to the outermost TabContainer that contains the TabPanel being extended. TabContainer tabContainer = (TabContainer)base.FindControl(OuterTabPanelID); if (tabContainer != null) { // Check to see if any of the tabs are the control we are looking form. foreach (TabPanel tab in tabContainer.Tabs) { if (tab.ID == e.ControlID) { e.Control = tab; return; } } // If none of the tabs are what we are looking for, search the contents of each tab. foreach (TabPanel tab in tabContainer.Tabs) { Control ctrl = tab.FindControl(e.ControlID); if (ctrl != null) return; } } }
-
extenderのクライアント側の動作スクリプト(およびサーバーとクライアントコードの間の対話、このMSDNページは役に立ち、あなたにたくさんのトラブルを保存します。