c# - 使用 Bootstrap 回发后恢复选定的选项卡

标签 c# asp.net twitter-bootstrap tabs state

我在 Bootstrap 上使用选项卡:在这个例子中,我有 4 个选项卡并在其中使用了一些 ASP.NET WebControls,比如 DropdownLists、Buttons 和 TextBoxes。 当我选择下拉列表项或单击按钮时,以前和实际选择的选项卡状态丢失并且无法恢复。

<script src="/Scripts/bootstrap-tabs.js" type="text/javascript"></script>
<script>
   $(function(){
      $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
      // Get the name of active tab
      var activeTab = $(e.target).text(); 
      // Get the name of previous tab
      var previousTab = $(e.relatedTarget).text(); 
      $(".active-tab span").html(activeTab);
      $(".previous-tab span").html(previousTab);
   });
});
</script>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <asp:Panel ID="Panel1" runat="server" GroupingText="Selección Fecha">    
        <ul id="profileTabs2" class="nav nav-tabs">
                  <li><a href="#detallepagosactividad" data-toggle="tab">uno</a></li>
                  <li><a href="#detallefacturacion" data-toggle="tab">dos</a></li>
                  <li><a href="#detallefacturacion2" data-toggle="tab">tres</a></li>
                  <li><a href="#detallefacturacion3" data-toggle="tab">cuatro</a></li>
        </ul> 
        <div class="tab-content" id="myTabContent2">
              <div id="detallepagosactividad" class="tab-pane fade">
                  some text
              </div>
              <div id="detallefacturacion" class="tab-pane fade">
                  other text
              </div>
              <div id="detallefacturacion2" class="tab-pane fade">
                  <asp:Button ID="Button1" runat="server" Text="Button" />
              </div>
              <div id="detallefacturacion3" class="tab-pane fade">
                   <asp:Button ID="Button2" runat="server" Text="Button" />
              </div>
              </div>
              <hr>
                    <p class="active-tab"><strong>Active Tab</strong>: <span></span></p>
                     <p class="previous-tab"><strong>Previous Tab</strong>: <span></span></p>
              <hr>
        </asp:Panel>
        </ContentTemplate>
        </asp:UpdatePanel>

最佳答案

Bootstrap TabContainer 是一个 html 控件,而不是 asp.net web 控件。因此,不会为选项卡容器维护任何状态。但是在回发时,整个更新面板的内容都被替换为来自服务器的新内容。这就是重置您的选项卡设置的原因(实际上,CSS 类“active”已从先前选择的选项卡中删除)

您必须重新考虑您的更新面板安排。与其将整个 Bootstrap 选项卡容器包装到更新面板中,不如将更新面板分解为多个较小的面板。像这样:

    <asp:Panel ID="Panel1" runat="server" GroupingText="Selección Fecha">    
    <ul id="profileTabs2" class="nav nav-tabs">
              <li><a href="#detallepagosactividad" data-toggle="tab">uno</a></li>
              <li><a href="#detallefacturacion" data-toggle="tab">dos</a></li>
              <li><a href="#detallefacturacion2" data-toggle="tab">tres</a></li>
              <li><a href="#detallefacturacion3" data-toggle="tab">cuatro</a></li>
    </ul> 
    <div class="tab-content" id="myTabContent2">
          <div id="detallepagosactividad" class="tab-pane fade">
              <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                  some text
                </ContentTemplate>
              </asp:UpdatePanel>
          </div>
          <div id="detallefacturacion" class="tab-pane fade">
              <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>
                  some text
                </ContentTemplate>
              </asp:UpdatePanel>
          </div>
          <div id="detallefacturacion2" class="tab-pane fade">
              <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                  <asp:Button ID="Button1" runat="server" Text="Button" />
                </ContentTemplate>
              </asp:UpdatePanel>
          </div>
          <div id="detallefacturacion3" class="tab-pane fade">
               <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                  <asp:Button ID="Button2" runat="server" Text="Button" />
                </ContentTemplate>
              </asp:UpdatePanel>
            </div>
          </div>
          <hr>
                <p class="active-tab"><strong>Active Tab</strong>: <span></span></p>
                 <p class="previous-tab"><strong>Previous Tab</strong>: <span></span></p>
          <hr>
    </asp:Panel>

通过这种方式,您可以更好地控制要更新的内容。此外,在回发时,您的选项卡和标签面板不会重置为初始状态

关于c# - 使用 Bootstrap 回发后恢复选定的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250457/

相关文章:

c# - 使 Gridview 列充满可点击的 URL

c# - Azure Web应用程序授权: session variables for auth/me

c# - 在 C# 中将小数转换为 double 会产生差异

asp.net - asp.net webclient 中 UploadData 和 DownloadString 之间的基本区别是什么?

asp.net - 在Docker中托管Razor组件的建议

twitter-bootstrap - Bootstrap 5 - 3 列布局和文本右对齐

c# - 数据注释 - 根据代码中的条件删除实体验证

Chrome 中的 CSS 下拉菜单问题

javascript - 为选项卡内容 Bootstrap 多个导航选项卡

c# - 如何注入(inject) Application Insights 代码以监视所有方法中的计时