DNN 6 вкладок jQuery

Я пытался с несколькими наполовину неудачными попытками заставить версию вкладок jQuery DNN 6 (называемую DNNTabs) работать на странице «Редактировать» пользовательских модулей (которая открывается в модальном режиме, подобно модулю «Настройки»). Я хочу, чтобы к вкладкам и кнопкам применялась одна и та же тема/css по умолчанию (она должна вести себя почти так же, как настройки).

Вот то, что кажется началом некоторой документации, но она не очень полная.

http://www.dotnetnuke.com/Resources/Wiki/Page/dnnTabs-jQuery-Plugin.aspx

Я искал в Интернете примеры для подражания, но в большинстве примеров используются оригинальные вкладки jQuery и/или их модификации для «работы» с DNN.

http://jqueryui.com/demos/tabs/

Начало моего кода, который не работает.

<script type="text/javascript">
    $('#tabs').dnnTabs();
</script>
<div id="tabs" class="dnnForm dnnModuleSettings dnnClear">
    <ul class="dnnAdminTabNav dnnClear">
        <li><a href="#tab1">Tab 1</a></li>
        <li><a href="#tab2">Tab 2</a></li>
    </ul>
    <div id="tab1">
        Some content...
    </div>
    <div id="tab2">
        Some content...
    </div>        
</div>

Где-то еще я читал, что мне нужно запросить регистрацию плагинов DNN в моем OnInit следующим образом:

protected void OnInit(object sender, System.EventArgs e)
{
    DotNetNuke.Framework.jQuery.RequestDnnPluginsRegistration();
}

Я пропустил еще одну ссылку, строку кода или что-то еще? 1) все вкладки отображаются при загрузке и 2) щелчок по вкладке просто прокручивается до местоположения идентификатора в модальном режиме (который после этого не может прокручиваться обратно наверх)


person roadsunknown    schedule 26.01.2012    source источник


Ответы (1)


Я думаю, что это выглядит завершенным; единственная проблема, которую я вижу, заключается в том, что вы инициализируете плагин до того, как определили вкладки. То есть первое, что вы делаете, это извлекаете элемент с вкладками ID и настраиваете для него плагин, но этот элемент еще не существует. Переместите свой скрипт в нижнюю часть вашего элемента управления, и я думаю, он начнет работать.

Еще одна вещь, которую вам может понадобиться настроить, это ваш обработчик OnInit. Как правило, OnInit является переопределением Control.OnInit, поэтому в итоге это будет выглядеть так:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    jQuery.RequestDnnPluginsRegistration();
}

Вы также можете посмотреть мой пример этого (и других) плагинов на https://github.com/bdukes/DNN-World-Demos. Эти примеры довольно урезаны, поэтому вы увидите, что есть несколько стилей CSS, которые вам на самом деле не нужны, если вы их не используете.

person bdukes    schedule 26.01.2012
comment
И изменение OnInit, и перемещение jQuery ниже (я знал это :) исправили это. При первой загрузке все отображается как положено, а при постбэке ничего. Я добавил UpdatePanels внутри каждой вкладки, чтобы разрешить это в соответствии с: stackoverflow.com/questions/2149908/ Кстати, ваши урезанные примеры великолепны. Они должны быть размещены на основной вики-странице DNN сами по себе или в виде ссылок. - person roadsunknown; 27.01.2012
comment
Да, либо UpdatePanels внутри divs, либо вы можете снова настроить плагин jQuery после каждой обратной передачи, как я делаю в Пример панелей. Ходили разговоры о том, чтобы включить эти примеры в вики или что-то в этом роде, но я не думаю, что кто-то вспомнил об этом на самом деле... - person bdukes; 27.01.2012