Pregunta

Estoy tratando de escribir un AJAX extensor de control que puede modificar un AJAX Control Toolkit TabPanel de modo que la TabPanel's de la cabecera tiene una imagen después de que el texto que, cuando se pulsa, se esconde la ficha encabezado el uso de script del lado del cliente (sin devolución).También me gustaría ser capaz de especificar un onClientClose función que también se llama cuando una pestaña se cierra.

Soy nuevo en ASP control de los extensores, y hasta ahora he seguido el [tutorial](http://www.asp.net/ajax/tutorials/creating-a-custom-ajax-control-toolkit-control-extender-cs"Crear una Personalizada AJAX Control Toolkit Extensor de Control") en el ASP.NET sitio para crear una personalizada extensor.He llamado a mi extensor un ClosableTabPanelExtender, y mi suplemento genera el proyecto.Puedo configurar una página web de prueba así:

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

Hasta ahora, recibo el siguiente error cuando ejecuto el sitio web:
The TargetControlID of 'ClosableTabPanelExtender1' is not valid. A control with ID 'TabPanel1' could not be found.
El error que me hace pensar que un TabPanel no puede ser prolongado, así que voy a tener que ampliar el TabContainer en su lugar?

Aparte del error, yo podría utilizar un poco de dirección, especialmente con el Comportamiento de la secuencia de comandos.Es la parte más difícil de alcanzar para mí, aunque sé que es probable que se casa la mayor parte de la funcionalidad que estoy tratando de agregar.Tampoco estoy seguro de cómo las otras partes de la extensor de trabajar junto con él.

Tengo el Ajax Toolkit código fuente, y han mirado a través de la fuente de los controles de la Ficha, que me parcialmente entender.También he mirado a través de varios ejemplos de extensores de control, principalmente Matt Berseth del extensores y uno de Dan Wahlin.

¿Fue útil?

Solución

Finalmente me di cuenta de lo que tenía que hacer.Para cualquiera que esté interesado en la solución:

  • Con el fin de ampliar el TabPanel de control, tenía que estar todo el error que he publicado con la invalidación de la OnResolveControlID método en mi suplemento del código del servidor (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;
            }
        }
    }
    
  • Como para el lado del cliente el Comportamiento de la secuencia de comandos de la extensión (y la interacción entre el servidor y el cliente de código, los artículos que se enumeran en esta página de MSDN son útiles y te ayudarán a ahorrar un montón de problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top