Ajax 컨 툴킷을 사용자 지정 탭 extender 을 닫 탭을 클라이언트 측면
-
18-09-2020 - |
문제
내가 하려고 쓰기 AJAX 컨트롤 익스텐더를 수정할 수 있는 AJAX 컨트롤 Toolkit TabPanel
록 TabPanel
's 헤더가 이미지 텍스트를 클릭하면 숨 탭 헤더를 사용하여 클라이언트 측 스크립트(지 않고 다시 게시).도를 지정할 수 있는 onClientClose 하는 기능도라고 할 때 이 탭을 닫습니다.
나는 새로운 ASP 컨트롤 extender 고,지금까지 나를 따라[tutorial](http://www.asp.net/ajax/tutorials/creating-a-custom-ajax-control-toolkit-control-extender-cs"만들기 사용자 지정 AJAX 컨 Toolkit 컨트롤 Extender")에 ASP.NET 사이트를 만들기 위한 맞춤 extender.나가라고 내 extender a ClosableTabPanelExtender
, 내 extender 프로젝트 빌드.나는 설정을 테스트하는 웹 페이지므:
<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" />
지금까지,나는 다음과 같은 오류를 실행할 때 웹 사이트:
The TargetControlID of 'ClosableTabPanelExtender1' is not valid. A control with ID 'TabPanel1' could not be found.
에 오류가 나를 생각하게는 TabPanel
할 수 없는 확장된,그래서 나는가를 확장 TabContainer
까요?
에서 떨어져 오류가 사용할 수 있는 몇 가지 방향으로 특히 행동은 스크립트입니다.그것은 가장 어려운 부분에게도 나는 그것을 가능성이 집의 대부분의 기능을 하는 내가 노력하고 있습니다.또한 저는 확실하지 않는 방식의 다른 부분 extender 함께 일합니다.
가 Ajax 툴킷 소스 코드,그리고 보았을 통해 원본 탭에 대한 컨트롤을 나는 부분적으로 이해합니다.나도 봤을 통해 몇몇의 예에는 제어 extender 로 매트 Berseth 의 extender 하나에서 댄 Wahlin.
해결책
마지막으로 생각하세요.에 대한 관심이 있는 사람에 솔루션:
를 확장하기 위해서 TabPanel 제어하는 것을 보장하는 것은 주위에 게시 오류를 재정의하여
OnResolveControlID
는 방법에 내 extender 의 서버 코드(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 은 도움이되고 저장됩니다 당신이 고민을 많이 했습니다.