Аккордеон SelectedIndex за кодом последнего выбранного элемента? - PullRequest
0 голосов
/ 19 ноября 2011

возможно ли в заднем коде установить SelectedIndex аккордеона на тот же индекс, на который пользователь просто щелкнул?

Ответы [ 2 ]

0 голосов
/ 01 августа 2013

Мое решение:

  1. Установить cookie на SelectedIndexChanged с помощью JavaScript
  2. Чтение куки на странице загрузки события
  3. Установить SelectedIndex

Вверху вашей страницы, используя ID аккордеонного контроля Accordion1:

<script type="text/javascript" language="javascript">        
function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        } else var expires = "";
        document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
    }

    function readCookie(name) {
        var nameEQ = escape(name) + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length, c.length));
        }
        return null;
    }

    function pageLoad() {
        var current_path = window.location.pathname.split('/').pop();
        console.log('current path:'+current_path);
        $find('Accordion1_AccordionExtender').add_selectedIndexChanged(onAccordionPaneChanged);

        var idx = readCookie('a_index');

        changeSelected(idx);
        $find('Accordion1_AccordionExtender').set_TransitionDuration(50);
    }

    // expand given accordion pane
    function changeSelected(idx) {

        $find('Accordion1_AccordionExtender').set_SelectedIndex(idx);

    }
    function onAccordionPaneChanged(sender, eventArgs) {
        var selPane = sender.get_SelectedIndex();
        // alert('You selected Pane ' + selPane);
        createCookie('a_index', selPane, 1);

    }
</script>

В коде позади:

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim si As String = String.Empty 'selected index 

        If Request.Cookies("a_index") IsNot Nothing Then

            si = Request.Cookies("a_index").Value

            If si <> String.Empty Then
                Accordion1.SelectedIndex = si
            End If

        End If

    End Sub
0 голосов
/ 20 ноября 2011
    Accordion.SelectedIndex = -1;
    Accordion.RequireOpenedPane = false;
...