От новичка до гуру: Курсы программирования на CyberDuff

Оставаться закладкой начальной загрузки после обратной передачи С#

В настоящее время у меня проблема с сохранением вкладки начальной загрузки после обратной загрузки файла. Код выглядит следующим образом

<script type="text/javascript">

                $('#myTab a[href="#image"]').click(function (e) {
                    e.preventDefault();
                    $("#myTab").removeClass("active"); 
                    $(this).addClass('active');
                    $(this).tab('show');
                })

                $('#myTab a[href="#information"]').click(function (e) {
                    e.preventDefault();
                    $("#myTab").removeClass("active");
                    $(this).addClass('active');
                    $(this).tab('show');
                })

                $('#myTab a[href="#password"]').click(function (e) {
                    e.preventDefault();
                    $("#myTab").removeClass("active");
                    $(this).addClass('active');
                    $(this).tab('show');
                })

                $('#myTab a[href="#account"]').click(function (e) {
                    e.preventDefault();
                    $("#myTab").removeClass("active");
                    $(this).addClass('active');
                    $(this).tab('show');
                })

    </script>

Может ли кто-нибудь просветить меня, как сохранить этот бутстрап после обратной передачи?


Ответы:


1

Ну, у меня уже была эта проблема, и я решил ее следующим образом:

  1. Включите новый HiddenField на свою страницу и установите для него значение первого tab, которое нужно показать:

    <asp:HiddenField ID="hidTAB" runat="server" Value="image" />
    
  2. Для каждой функции click, которую вы определили для чередования tabs, установите значение HiddenField равным фактическому нажатому tab.

    document.getElementById('<%=hidTAB.ClientID %>').value = "image";
    
  3. В вашей функции jQuery document.ready используйте значение HiddenField для переключения на последнюю вкладку, открытую перед Postback.

    $(document).ready( function(){
        var tab = document.getElementById('<%= hidTAB.ClientID%>').value;
        $( '#myTab a[href="' + tab + '"]' ).tab( 'show' );
    });
    

Вот документация по вкладке Bootstrap и вот Готовая документация по jQuery

15.01.2014
  • Привет, мне жаль. Я новичок в jquery. Можете ли вы предоставить мне образец, чтобы я мог работать? 15.01.2014
  • на 3-м шаге я продолжаю сталкиваться с ошибкой; ожидал. я проверяю синтаксис, я не могу найти с ним никаких проблем? как это можно решить? 15.01.2014
  • однако изменил document.getElementById('‹%hidTAB.ClientID%›').. на ('‹%=hidTAB.ClientID%›'). это все еще кажется тем же самым. 15.01.2014
  • Как отображается код, относящийся к третьему шагу? Можете ли вы положить его здесь? 15.01.2014
  • я изменил коды на $(document).ready(function () { var tab = document.getElementById('‹%=hdnActiveTab.ClientID %›').value; $('#myTab a[href=' + tab + ']').tab('показать'); }) 15.01.2014
  • Неа. он не остается на вкладке, когда была нажата кнопка на выбранной вкладке. 15.01.2014
  • @aledpardo попробуйте это на моем примере, но не работает, можете ли вы попробовать и проверить это для меня. ссылка: stackoverflow.com/questions/22964301/ 22.04.2014
  • Проблема в том, что это вызывает ужасное мерцание, поскольку оно загружает состояние по умолчанию, а затем изменяет его только после загрузки документа. 10.10.2017
  • Эй Джо! Что ж, это поведение по умолчанию для приложения ASP.NET WebForms. При каждом действии он обращается к серверу, который отправляет новую страницу для отображения. Поскольку щелчок по вкладке выполняется только на стороне клиента, мы используем HiddenField для отслеживания идентификатора вкладки. 03.09.2019

  • 2

    Что касается приведенных выше идей, вот как я это сделал (включая полный код)

    На вашей HTML-странице в разделе ‹ Head > поместите

    <script type="text/javascript">
        $(document).ready(function () {
            var tab = document.getElementById('<%= hidTAB.ClientID%>').value;
            $('#myTabs a[href="' + tab + '"]').tab('show');
        });
    </script>
    

    в разделе ‹ body > поместите скрытое поле

    <asp:HiddenField ID="hidTAB" runat="server" Value="#tab1" />
    

    а также в разделе ‹ body > есть код, связанный с Bootstrap 3.0

    <ul class="nav nav-tabs" id="myTabs">
      <li><a href="#tab1" data-toggle="tab">Home page</a></li>
      <li><a href="#tab2" data-toggle="tab">another page</a></li>
    </ul>
    

    Не делайте никакую вкладку активной (это устанавливается начальным значением = "# tab1" скрытого поля).

    Затем добавьте кнопку в tab2 DIV

    вот так:

    <div class="tab-pane" id="tab2">
      <asp:FileUpload ID="FileUpload2" runat="server" /> (note this example is for uploading a file)
      <asp:Button ID="FileUploadButton" runat="server" Text="Upload File" onclick="FileUploadButton_Click" />
    </div>
    

    Наконец, добавьте свой код С#, чтобы установить значение скрытого поля.

    protected void FileUploadButton_Click(object sender, EventArgs e)
    {
          hidTAB.Value = "#tab2";
    }
    

    при отправке обратно JQuery прочитает новое значение в скрытом поле и покажет tab2 :)

    Надеюсь, это поможет кому-то.

    Трев.

    10.09.2015
  • Я пробовал этот код. Но все вкладки видны. его добавление класса активно, когда мы нажимаем на tab2. но никаких изменений в пользовательском интерфейсе, даже активный класс, добавляется в ‹div class=tab-pane active id=tab02›. Можете ли вы сказать, что не так? 24.09.2017
  • Это работает очень хорошо, но я обнаружил, что мне нужно установить для скрытого поля статический идентификатор. <asp:HiddenField ID="hidTAB" runat="server" Value="#home" ClientIDMode="Static" /> 23.10.2019

  • 3

    Пожалуйста, попробуйте это

    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
    <div class="panel panel-default" style="width: 500px; padding: 10px; margin: 10px">
    <div id="Tabs" role="tabpanel">
    <!-- Nav tabs -->
     <ul class="nav nav-tabs" role="tablist">
        <li><a href="#personal" aria-controls="personal" role="tab" data-toggle="tab">Personal
        </a></li>
        <li><a href="#employment" aria-controls="employment" role="tab" data-toggle="tab">Employment</a></li>
     </ul>
    <!-- Tab panes -->
     <div class="tab-content" style="padding-top: 20px">
        <div role="tabpanel" class="tab-pane active" id="personal">
            This is Personal Information Tab
        </div>
        <div role="tabpanel" class="tab-pane" id="employment">
            This is Employment Information Tab
        </div>
     </div>
     </div>
    <asp:Button ID="Button1" Text="Submit" runat="server" CssClass="btn btn-primary" />
    <asp:HiddenField ID="TabName" runat="server" />
    </div>
    <script type="text/javascript">
    $(function () {
    var tabName = $("[id*=TabName]").val() != "" ? $("[id*=TabName]").val() : "personal";
    $('#Tabs a[href="#' + tabName + '"]').tab('show');
    $("#Tabs a").click(function () {
        $("[id*=TabName]").val($(this).attr("href").replace("#", ""));
    });
    });
    </script>
    
    21.10.2015
  • Это сработало для меня. Но в некоторых ситуациях он не работает. У меня много linkButtons внутри повторителя на второй вкладке. Когда я нажимаю любую кнопку linkButton, отображается содержимое первой вкладки, и обе вкладки деактивируются. Не подскажете как это исправить?? 07.10.2017

  • 4

    После довольно долгого тестирования вкладки начальной загрузки я решил перейти на вкладку jquery. Во-первых, вкладка jquery также дает ту же проблему, с которой я сталкиваюсь в этой ситуации ... но после долгих усилий по поиску решения и опробованию кодов за кодами.

    мне удалось найти решение

    Я очень благодарен человеку, который предоставил это решение. В этом решении он использует sessionStorage (для меня это новый материал, о котором я никогда не слышал) и коды

    $(document).ready(function () {
    var currentTabIndex = "0";
    
    $tab = $("#tabs").tabs({
         activate : function (e, ui) {
            currentTabIndex = ui.newTab.index().toString();
            sessionStorage.setItem('tab-index', currentTabIndex);
         }
    });
    
    if (sessionStorage.getItem('tab-index') != null) {
        currentTabIndex = sessionStorage.getItem('tab-index');
        console.log(currentTabIndex);
        $tab.tabs('option', 'active', currentTabIndex);
    }
    $('#btn-sub').on('click', function () {
        sessionStorage.setItem("tab-index", currentTabIndex);
        //window.location = "/Home/Index/";
    });
    });
    
    31.01.2014

    5

    В приведенном выше ответе: функция готовности документа должна быть изменена, как показано ниже.

      $(document).ready(function () {
            var selectedTab = $("#<%=hidTAB.ClientID%>");
            var tabId = selectedTab.val() != "" ? selectedTab.val() : "tab1";
            $('#myTab a[href="#' + tabId + '"]').tab('show');
            $("#myTab a").click(function () {
                selectedTab.val($(this).attr("href").substring(1));
            });
        });
    
    09.12.2019
    Новые материалы

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

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

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

    «Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
    TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

    Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
    Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

    Все о кейсах: Camel, Snake, Kebab & Pascal
    В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..