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

标签 c# jquery asp.net twitter-bootstrap gridview

我试图将分页添加到我的 GridView。 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 第二页的链接时,它工作正常。

知道是什么让它这样吗?

谢谢

最佳答案

所以我找到了问题所在。

问题存在于脚本代码中。它监听所有 <a>选项卡中的链接,并将 TabName 的值设置为其 href。 It works great when the only links in the tabs, are the tab buttons theirself.但是分页按钮也是<a>链接,然后它不起作用。

这是随时可用的固定脚本:

<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>

关于c# - Bootstrap 在 ASP.NET 中使用 gridview 分页保存当前选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47163047/

相关文章:

c# - 无法将类型为 'System.Byte' 的对象转换为类型 'System.UInt64'

c# - 如何在其 windowstate= 最大化的 mdi 容器窗体中显示子窗体?

javascript - 如何使用地理位置而不是纯文本来操作表单输入

javascript - jQuery.Click 方法重新加载页面

c# - 修改 "dd/MM/yyyy"的正则表达式

c# - 使用异步代码时获得有意义的堆栈跟踪

c# - Azure 登录 - 为错误请求指定回调 url

javascript - 如何让循环等待ajax响应

asp.net - 无法部署到 Elastic Beanstalk : ERROR_FILE_IN_USE

javascript - 使用submit()函数时不触发不引人注目的验证