[英]How can I limit Enumerable.Range to use count of the last index only and not exceed from it? - Asp.net
每次我將其用作轉發器的數據源時,最終它將顯示頁號,這些頁號在我為gridview所做的分頁中沒有索引。 你們是否有想法根據gridview.pagecount限制此enumerable.range? 我只希望每個索引單擊顯示10個頁碼。 所以這是代碼
protected void Repeater_Load(object sender, EventArgs e)
{
Repeater Repeater = (Repeater)sender;
Repeater.DataSource = Enumerable.Range(GridView1.PageIndex + 1, 10);
Repeater.DataBind();
}
我的Gridview總共有21個頁數,但是我想在每次單擊數字時顯示10個頁碼。
例如在這里,我單擊了2,它將顯示2,3,4,5,6,7,8,9,10,11或2-11,如果您在gridview中確實有10頁計數,則此方法有效如果我沒有10頁怎么辦? 如果我有3個頁面計數,然后將10個放在enumerable.range中怎么辦?
這就是我目前面臨的問題,希望大家能幫助我解決當前面臨的困境。
並且如果我單擊了21(這是最后一個頁面計數),它將顯示21-30,它不再位於gridview1.pageindex中。
更新
這是我的問題的形象...
這也是我現在在代碼中所做的
protected void Repeater_Load(object sender, EventArgs e)
{
Repeater Repeater = (Repeater)sender;
Repeater.DataSource = Enumerable.Range(GridView1.PageIndex + 1, GridView1.PageCount); // 10
Repeater.DataBind();
}
您可以使用GridView的“頁數”來像這樣在Repeater中獲取正確的項目數。
Repeater1.DataSource = new string[GridView1.PageCount];
Repeater1.DataBind();
ASPX
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<%# Container.ItemIndex > 0 ? " - " : "" %>
<%# Container.ItemIndex + 1 %>
</ItemTemplate>
</asp:Repeater>
.Range
需要兩個參數:起始編號和要采用的元素數量。
如果我理解正確,並且希望將頁面分成10個批次,則可以動態計算這些值-
int currentPage = GridView1.PageIndex;
int batchSize = new[] { GridView1.PageCount - currentPage, 10 }.Min();
Repeater.DataSource = Enumerable.Range(currentPage, batchSize);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.