我写了下面的代码行
public void UpdatePageLables(int aPageCount)
{
PageCount = (int)Math.Ceiling((decimal)aPageCount / PageSize);
int recordCount = PageCount;
if (PageSizeChanged != null)
{
HiddenField hd = new HiddenField();
int current;
current = PageIndex;
int pre;
int Next;
double dblPageCount = (double)((decimal)recordCount / decimal.Parse(lstPageSize.SelectedValue));
int pageCount = PageCount;
List<ListItem> pages = new List<ListItem>();
if (pageCount > 0)
{
// pages.Add(new ListItem("First", "1", PageIndex > 1));
current = PageIndex;
pre = --PageIndex;
PageIndex = current;
// pages.Add(new ListItem("Previous", pre.ToString(), PageIndex > 1));
for (int i = 1; i <= aPageCount; i++)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
}
int currentPage = PageIndex;
Next = ++PageIndex;
PageIndex = currentPage;
//pages.Add(new ListItem("Next", Next.ToString(), PageIndex < pageCount));
// pages.Add(new ListItem("Last", pageCount.ToString(), PageIndex < pageCount));
hd.Value = (pre.ToString());
}
rptPager.DataSource = pages;
rptPager.DataBind();
}
}
在ascx文件中
<div class="pagination">
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" OnClick="imgPre_Click"
data-rel="tooltip" data-original-title="previous page.">«</asp:LinkButton>
<asp:Repeater ID="rptPager" OnItemDataBound="rptPager_ItemDataBound" runat="server">
<ItemTemplate>
<asp:LinkButton ID="lnkPage" runat="server" Text = '<%#Eval("Text") %>' CommandArgument = '<%# Eval("Value") %>' Enabled = '<%# Eval("Enabled") %>' OnClick = "Page_Changed"></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="false" OnClick="imgnext_Click"
data-rel="tooltip" data-original-title="next page."> »
</asp:LinkButton>
<div class="page-size"><span>Page Size: </span>
<asp:DropDownList runat="server" ID="lstPageSize" AutoPostBack="true" style="float:right"
OnSelectedIndexChanged="lstPageSize_SelectedIndexChanged">
<asp:ListItem Text="5" Value="5"></asp:ListItem>
<asp:ListItem Text="10" Value="10"></asp:ListItem>
<asp:ListItem Text="15" Value="15" Selected="True"></asp:ListItem>
<asp:ListItem Text="25" Value="25" ></asp:ListItem>
<asp:ListItem Text="50" Value="50"></asp:ListItem>
<asp:ListItem Text="75" Value="75"></asp:ListItem>
<asp:ListItem Text="100" Value="100"></asp:ListItem>
<asp:ListItem Text="150" Value="150"></asp:ListItem>
</asp:DropDownList>
</div>
</div>
现在我想只显示前七个页码链接,当有一百个页码链接时,不应显示其余的页码链接。 当用户点击...按钮时,应显示8到14的页码,隐藏1到7,依此类推。 请帮我 !!!
答案 0 :(得分:0)
您应该只填写包含所需页面的页面列表。因此,如果您想要7个页面(3个左侧选择索引,3个右侧选择索引),您可以执行以下操作:
for (int i = PageIndex - 3; i <= PageIndex + 3; i++)
{
if (i > 0 && i <= aPageCount) {
{
//i is still inside total range of pages, so page can be added
pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
}
}
如果你想要其他页面列表(比如PageIndex之后的7页)你需要更改for循环。