문제

내가 하려고 쓰기 AJAX 컨트롤 익스텐더를 수정할 수 있는 AJAX 컨트롤 Toolkit TabPanelTabPanel'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 은 도움이되고 저장됩니다 당신이 고민을 많이 했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top