Bootstrap 在 ASP.NET 中使用 gridview 分页保存当前选项卡

Posted

技术标签:

【中文标题】Bootstrap 在 ASP.NET 中使用 gridview 分页保存当前选项卡【英文标题】:Bootstrap save current tab with gridview pagination in ASP.NET 【发布时间】:2018-04-20 03:45:48 【问题描述】:

我试图将分页添加到我的 GridView。网格视图位于作为某些选项卡之一的选项卡内。

html 代码是:

<div id="Tabs" class="row">
<ul class="nav nav-tabs">
  <li class="active"><a data-toggle="tab" href="#home">Home</a></li>
  <li><a data-toggle="tab" href="#menu1">Menu 1</a></li>
  <li><a data-toggle="tab" href="#menu2">Menu 2</a></li>
</ul>

<div class="tab-content">
  <div id="home" class="tab-pane fade in active">
    <h3>HOME</h3>
    <p>Some content.</p>
  </div>
  <div id="menu1" class="tab-pane fade">
    <h3>Menu 1</h3>
    <p>Some content in menu 1.</p>
  </div>
  <div id="menu2" class="tab-pane fade">
    <h3>Menu 2</h3>
    <p>Some content in menu 2.</p>
  </div>
</div>
</div>

我使用了保存当前选项卡 ID 的技巧,并且每次加载页面时都显示此选项卡:

<asp:HiddenField ID="TabName" runat="server" />

和脚本:

$(document).ready(function () 
            var tabName = $("[id*=TabName]").val() != "" ? $("[id*=TabName]").val() : "home";
            $('#Tabs a[href="#' + tabName + '"]').tab('show');
            $("#Tabs a").click(function () 
                $("[id*=TabName]").val($(this).attr("href").replace("#", ""));
            );
        );

Page_load 代码是:

protected void Page_Load(object sender, EventArgs e)
    
        if (!Page.IsPostBack)
        
            populateAllGrids();
        
        else
            TabName.Value = Request.Form[TabName.UniqueID];

    

当我单击选项卡内的按钮时效果很好,但是当我单击分页的链接时,它会将 TabName 值设置为链接本身。

例如,它会这样设置:

ctl00$ContentSection$TabName:javascript:__doPostBack('ctl00$ContentSection$grvManufacturers','Page$2')

顺便说一句,当我从 Chrome 的控制台运行将我移动到 GridView 的第二页的链接时,它工作正常。

知道是什么让它如此吗?

谢谢

【问题讨论】:

【参考方案1】:

所以我发现了问题所在。

脚本代码中存在问题。它侦听选项卡中的所有&lt;a&gt; 链接,并将TabName 的值设置为它们的href。当标签中唯一的链接是标签按钮时,它很棒。但是分页按钮也是&lt;a&gt;链接然后就不行了。

这是可以随时工作的固定脚本:

<script>
        $('#ContentSection_ddlOptions').selectpicker();

        $(document).ready(function () 
            var tabName = $("[id*=TabName]").val() != "" ? $("[id*=TabName]").val() : "addManufacturer";
            $('#Tabs > .nav-tabs a[href="#' + tabName + '"]').tab('show');
            $("#Tabs > .nav-tabs a").click(function () 
                $("[id*=TabName]").val($(this).attr("href").replace("#", ""));
            );
        );
    </script>

【讨论】:

所以帮助满满。我遇到了同样的问题并尝试了这个......它奏效了......很好

以上是关于Bootstrap 在 ASP.NET 中使用 gridview 分页保存当前选项卡的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 ASP.NET 菜单中使用 BreadCrumb 的 Bootstrap 样式?

如何在 ASP.NET Core 中使用 Bootstrap 4

Bootstrap asp.net 框架初学者

asp.net + Bootstrap 动态表

Bootstrap 在 ASP.NET 中使用 gridview 分页保存当前选项卡

ASP.NET TabContainer 和 Bootstrap 冲突