我试图将Pagination添加到我的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的第二页时,它可以正常工作。
知道是什么让它像这样吗?
由于
答案 0 :(得分:1)
所以我发现了什么问题。
脚本代码中存在问题。它会侦听选项卡中的所有<a>
链接,并将TabName的值设置为其href。当标签中的唯一链接是自己的标签按钮时,它工作得很好。但分页按钮也是<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>