如何在ASP.NET中对单行数据进行分页

本文关键字:数据 单行 分页 ASP NET | 更新日期: 2023-09-27 18:00:51

我有一篇文章很大(单个数据库行(,我需要逐页显示。

如果它是一个数据集(多行(,那么我可以在带有服务器端分页的网格上显示。

对于一个大行,如何逐页分割?

当用户提交一篇非常大的文章时的典型情况。

如何在ASP.NET中对单行数据进行分页

您能否将文章的文本内容拆分为段落分隔符,并从中生成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