c# - 如何限制 Enumerable.Range 仅使用最后一个索引的计数而不超出它?- 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 页数,那么我在 enumerable.range 中放了 10 页怎么办?
这就是我目前面临的问题,我希望你们能帮助我解决我目前正在处理的困境。
而且,如果我单击最后一页计数 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();
}
解决方案
.Range
需要两个参数:起始编号和要采用的元素数量。
如果我理解正确,并且您想将您的页面分成 10 个批次,您可以动态计算这些值——
int currentPage = GridView1.PageIndex;
int batchSize = new[] { GridView1.PageCount - currentPage, 10 }.Min();
Repeater.DataSource = Enumerable.Range(currentPage, batchSize);
推荐阅读
- angular - 如何在单击角度按钮时在背景中播放视频?
- java - Java 8:如何将纯 UTF-8 文本转换为 RTF(符号 > 127)?
- python - 为 JWT 用户令牌调用 DocuSign API 时出现错误请求。同意?
- java - JPA 问题@OneToMany - 如何从数据库中获取特定对象?
- java - 为什么我的 toString() 方法不起作用以及如何防止 SpringBootJPA 中的嵌套返回?
- firebase - 在 Flutter App 中找不到 Firebase 动态链接
- python - Pymongo MongoDb中删除子目录元素的问题
- c++ - 在接受指向抽象基类的指针的函数中使用派生类操作
- python - 无法在pycharm上安装熊猫
- django - Django 计算匹配分数(联合后注释查询的解决方法)