簡體   English   中英

如何限制Enumerable.Range僅使用最后一個索引的計數,並且不超過該范圍? -Asp.net

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM