Question

Je suis d'essayer d'écrire un AJAX control extender qui peuvent modifier une requête AJAX Control Toolkit TabPanel de sorte que le TabPanels 'en-tête a une image après le texte, lorsqu'il est cliqué, masque l'onglet en-tête à l'aide d'un script côté client (sans publication).Je tiens également à être en mesure de spécifier un onClientClose fonction est également appelée lorsqu'un onglet est fermé.

Je suis nouveau à l'ASP, le contrôle des rallonges, et jusqu'à présent, j'ai suivi la [tutoriel](http://www.asp.net/ajax/tutorials/creating-a-custom-ajax-control-toolkit-control-extender-cs"La création d'une Coutume AJAX Control Toolkit extension de Contrôle") sur le ASP.NET site pour créer un répéteur.J'ai appelé mon extender une ClosableTabPanelExtender, et mon extender projet s'appuie.J'ai mis en place un test de la page web comme ceci:

<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" />

Jusqu'à présent, je reçois le message d'erreur suivant lorsque je lance le site web:
The TargetControlID of 'ClosableTabPanelExtender1' is not valid. A control with ID 'TabPanel1' could not be found.
L'erreur me fait penser à un TabPanel ne peut pas être étendu, donc je vais élargir le TabContainer au lieu de cela?

En dehors de l'erreur, je pourrais utiliser de sens, surtout avec le script de Comportement.Il est le plus insaisissable partie de moi, même si je sais qu'il y aura probablement de la maison la plupart des fonctionnalités que je suis en train d'ajouter.Je suis également pas sûr de savoir comment les autres parties de l'extenseur de travailler avec elle.

J'ai l'Ajax Toolkit code source, et ont regardé à travers la source de l'Onglet de contrôles, dont je suis partiellement comprendre.J'ai aussi regardé à travers plusieurs exemples de contrôle de câbles d'extension, principalement Matt Berseth de rallonges et l'un de Dan Wahlin.

Était-ce utile?

La solution

J'ai finalement compris ce que je devais faire.Pour quiconque est intéressé à la solution:

  • Afin de prolonger la TabPanel de contrôle, j'ai dû contourner l'erreur que j'ai posté en remplaçant la OnResolveControlID méthode dans mon extenseur de du serveur de code (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;
            }
        }
    }
    
  • Comme pour le côté client, le script de Comportement de l'unité d'extension (et de l'interaction entre le serveur et le client code, les articles énumérés sur cette page MSDN sont utiles et vous permettront d'économiser beaucoup d'ennuis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top