如何在ASP.NET中对单行数据进行分页
本文关键字:数据 单行 分页 ASP NET | 更新日期: 2023-09-27 18:00:51
我有一篇文章很大(单个数据库行(,我需要逐页显示。
如果它是一个数据集(多行(,那么我可以在带有服务器端分页的网格上显示。
对于一个大行,如何逐页分割?
当用户提交一篇非常大的文章时的典型情况。
您能否将文章的文本内容拆分为段落分隔符,并从中生成List<string>
,然后将其绑定到分页和网格控件。然后,当页面被发布回来时,文章将以相同的方式被分割成块,分页就可以工作了。
当然,您可以跨请求缓存List<string>
,以避免必须转到数据库并重复处理记录。
怎么样:
- 通过
.Split
在某个平均大小的行上将数据拉入string[]
- 将每个项目添加到DataRow
- 将
.DataSource
分配给表
然后享受GridView
提供的寻呼。
以下是如何LINQ到string[]
中,并将结果与网格绑定。
没有通用的解决方案。一种方法是将其存储在已经按页面划分的数据库中。但我认为,在从数据库中阅读文章时,最好将其拆分为多个页面。例如:
var article=new ArticleRepository((.GetById(1(;//这里的文章有Pages属性,它可以根据您的喜好拆分原始文章datagrid.datasource=文章。页码;
当您决定以不同的方式拆分文章时,可以更改文章和Pages属性中的逻辑。而且它不会影响ASP.NET页面。也许以后你会决定这个页面应该有上一页或下一页的信息。然后Page可以有两个属性:PreviousPageExcept和NextPageExcept。这比将文章转换为字符串数组要好。有了Article类中的所有逻辑,还让我们对将文章划分为页面进行单元测试。
也许有类似的事情(我没有测试。(
公共函数SplitBySize(ByVal strInput为字符串,ByVal iSize为整数(为字符串((将strA((标注为字符串Dim iLength As Integer=strInput.Length((将iWords标注为整数=iLength/iSize+IIf((iLength Mod iSize 0(,1,0(ReDim strA(iWords(Dim j为整数=0,i为整数对于i=0到iLength步长iSizestrA(j(=中间值(strInput,i+1,iSize(j=j+1下一个i返回strA结束函数子页面加载((Dim id As Integer=5将页面标注为整数=2将chrsCountPerPage标注为整数=1000Dim topic As String="'(From s In topics Where s.id=id Select s(.first((.detailsDim STopic=按大小拆分(主题,chrsCountPerPage(如果页面>主题长度,则第1页结束如果lblTopic.text=主题(第1页(End Sub