Событие клика по CollapsiblePanelExtender - PullRequest
2 голосов
/ 27 мая 2009

У меня есть CollapsiblePanelExtender с обычными кнопками расширения и свертывания ... Я хотел бы, чтобы событие щелчка срабатывало при расширении расширителя, а другое событие щелчка - при сворачивании расширителя. Но самое важное событие - это когда оно продлено. Я мог бы жить без щелчка даже при обвале.

В большинстве примеров, которые я нашел при онлайн-поиске с использованием: «CollapsiblePanelExtender» «событие клика» вызывает реакцию расширителя на щелчок даже в другом месте, где ...

Я хочу, чтобы расширитель запускал JS при нажатии.

Как мне это сделать? Я задаю неправильный вопрос / использую неправильные строки поиска?

            CollapsiblePanelExtender extendatron = new CollapsiblePanelExtender();
            extendatron.ID = "cpe" + MenuId;
            extendatron.TargetControlID = "pnlContent" + strMenuId;
            extendatron.ExpandControlID = "pnlMenu" + strMenuId;
            extendatron.CollapseControlID = "pnlMenu" + strMenuId;
            extendatron.Collapsed = bCollapsed;
            extendatron.TextLabelID = strMenuName;
            extendatron.ExpandedText = m_strButtonLabelHide;
            extendatron.CollapsedText = m_strButtonLabelShow;
            extendatron.ImageControlID = "imglnk" + strMenuId;
            extendatron.CollapsedImage = "~/App_Themes/default/nbExpand.gif";
            extendatron.ExpandedImage = "~/App_Themes/default/nbCollapse.gif";
            extendatron.SuppressPostBack = true;
            extendatron.ScrollContents = false;

            var extender = $find('extendatron'); //this would be <%=myExtender.ClientID%>
            extender.add_collapsed( function() { alert('collapsed'); });
            extender.add_expanded( function() { alert('expanded'); });

Ответы [ 2 ]

3 голосов
/ 27 мая 2009

Полагаю, вы говорите о ASP.Net AJAX Control Toolkit. Вы можете добавить обработчики к свернутым и развернутым событиям следующим образом:

//this would be <%=myExtender.ClientID%> when using a master page
var extender = $find('myExtender_ClientId'); 
extender.add_collapsed( function() { alert('collapsed'); });
extender.add_expanded( function() { alert('expanded'); });

Дайте мне знать, если у вас есть какие-либо вопросы ... Я сделал несколько изменений в некоторых из этих объектов для различных решений.

0 голосов
/ 10 ноября 2011

Во-первых, вам нужно создать клиентскую часть (JavaScript) onClick событие для панели или пользователей, которые нажимают на элемент управления.

Итак, иди туда, набери onClick="functionName();"

<asp:Panel ID="pDocumentHeaderTitle" runat="server" CssClass="collapsePanelHeader" onClick="setCollapseState();"> 
       <asp:Image ID="imgDocumentHeaderHeader" runat="server" ImageUrl="~/images/wadown.gif"/>Document Header
       <asp:Label ID="lblDocumentHeaderHeader" runat="server">(Show)</asp:Label>
</asp:Panel>

Далее: Добавить этот JavaScript.

<script type="text/javascript">
    function setCollapseState() {
        var extenderDocumentHeader = document.getElementById("MainContent_cpeDocumentHeader_ClientState");
        setCookie("cpeDocumentHeaderStatus", extenderDocumentHeader.value, 5)
    }

    //W3Schools cookie code.
    function setCookie(c_name, value, exdays) {
        var exdate = new Date();
        exdate.setDate(exdate.getDate() + exdays);
        var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
        document.cookie = c_name + "=" + c_value;
    }

    //W3Schools cookie code.
    function getCookie(c_name) {
        var i, x, y, ARRcookies = document.cookie.split(";");
        for (i = 0; i < ARRcookies.length; i++) {
            x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
            y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
            x = x.replace(/^\s+|\s+$/g, "");
            if (x == c_name) {
                return unescape(y);
            }
        }
    }

</script>

Обратите внимание, что когда ваша страница загружена, появляется скрытое поле, в котором находится состояние ваших свертываемых панелей. Это будет правда или ложь. Зайдите на страницу источника и поищите ее.

Затем добавьте:

var extenderDocumentHeader = document.getElementById("MainContent_cpeDocumentHeader_ClientState");

Итак, кликните, получите это состояние клиентов, сохраните его в файле cookie и готово!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...