Как сделать так, чтобы вкладки Telerik TabStrip сохранялись между запросами страниц?

в Telerik ASP.NET MVC TabStrip, я хочу, чтобы страница помнила, какая вкладка была выбрана последней, и сохранила выбор при нескольких запросах страницы. У меня есть частичное представление, которое отображается на нескольких страницах и содержит вкладку TabStrip. С SelectedIndex вкладка set всегда выбирается, что сводит на нет выбор пользователя.

8
задан tereško 6 April 2013 в 17:07
поделиться

1 ответ

Я не смог найти ни официального способа сделать это через API Telerik, ни каких-либо полезных советов на их форуме, поэтому я решил пойти своим путем, используя:

  1. Html.Telerik().TabStrip().ClientEvents() и OnSelect(), и OnLoad()
  2. Плагин cookie для jQuery

Затем я подключил их, как показано ниже, в частичном представлении, содержащем TabStrip .

.ClientEvents(events => events
.OnSelect(() =>
{ 
    %>
    function(e) {
        var item = $(e.item);
        $.cookie('selectedTabIndex', item.index(), { path: '/' });
    }
    <%
})
.OnLoad(() =>
{ 
    %>
    function(e) {
        var tabStrip = $("#TabStrip").data("tTabStrip");
        var index = $.cookie('selectedTabIndex');
        var domElement = $("li", tabStrip.element)[index];
        tabStrip.select(domElement);
    }
    <%
})

)

Редактировать: я понял, что в моем ответе немного не хватает пояснений, поэтому я добавил:

Если это не очевидно, OnSelect фиксирует индекс выбранного вкладка, когда она выбрана и пишет это к файлу cookie, называемому выбранныйTabIndex. Путь в настоящее время установить так, чтобы он покрывал весь наш сайт, но если вы оставите это, это будет создайте новый файл cookie для каждого отдельного путь (который может быть вашим желаемым поведение). Кто-то более знаком с плагин jQuery cookie, пожалуйста поправьте меня, если я ошибаюсь, я не использовал его много.

Затем в OnLoad выполняется наоборот, в принципе. Он находит tabStrip, получает индекс из cookie, затем получает domElement из вкладка в индексе из файла cookie и говорит tabStrip выбрать этот ДомЭлемент.

Похоже, это работает довольно хорошо в Chrome и IE, но могут быть некоторые особенности в FFox 3.

Я надеюсь, что команда Telerik рассмотрит возможность добавления этого в свой API, так как мне кажется, что это довольно полезная функция для запекли. Извините, если это уже было, но я не смог найти его в документах.

6
ответ дан 5 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: