C# 如何在ASP.NET中对单行数据进行分页
我有一篇非常大的文章(单个数据库行),我需要逐页显示 如果它是一个数据集(多行),那么我可以在带有服务器端分页的网格上显示它 对于单个大行,如何逐页对其进行分段C# 如何在ASP.NET中对单行数据进行分页,c#,asp.net,paging,C#,Asp.net,Paging,我有一篇非常大的文章(单个数据库行),我需要逐页显示 如果它是一个数据集(多行),那么我可以在带有服务器端分页的网格上显示它 对于单个大行,如何逐页对其进行分段 当用户提交一篇非常大的文章时的典型情况。您能否将文章的文本内容拆分为段落分隔符,并从中列出一个列表,然后将其绑定到分页和网格控件。然后,当页面被发回时,文章将以相同的方式被分割成块,分页将起作用 当然,您可以在请求之间缓存列表,以便保存,但必须转到数据库并重复处理记录。如何: 通过将数据拉入字符串[]。按平均行大小拆分 将每个项目添加
当用户提交一篇非常大的文章时的典型情况。您能否将文章的文本内容拆分为段落分隔符,并从中列出一个
列表,然后将其绑定到分页和网格控件。然后,当页面被发回时,文章将以相同的方式被分割成块,分页将起作用
当然,您可以在请求之间缓存列表
,以便保存,但必须转到数据库并重复处理记录。如何:
- 通过
将数据拉入字符串[]
。按平均行大小拆分
- 将每个项目添加到数据行中
- 将
.DataSource
分配给表
然后享受GridView
提供的分页功能
您可以将LINQ放入字符串[]
,并将结果与网格绑定。没有通用解决方案。一种方法是将其存储在已经被页面分割的数据库中。但我认为,在从数据库中读取文章时,最好将文章拆分为多个页面。例如:
var article = new ArticleRepository().GetById(1);
//and here article has Pages property that splits original article whatever You like
datagrig.datasource = article.Pages;
var article=new article repository().GetById(1);
//这里的文章有Pages属性,可以根据您的喜好拆分原始文章
datagrig.datasource=article.Pages;
当您决定以不同方式拆分文章时,可以更改“文章和页面中的逻辑”属性。而且它不会影响ASP.NET页面。也许以后你们会决定那个页面应该有上一页的信息或者下一页的信息。然后页面可以有两个属性:PreviousPageExcept、NextPageExcept。这比将文章转换为字符串数组要好。在Article类中包含所有逻辑还可以让您对将文章划分为页面进行单元测试。可能是类似的事情
(我没有测试它。)
公共函数SplitBySize(ByVal strInput作为字符串,ByVal iSize作为整数)作为字符串()
Dim strA()作为字符串
Dim iLength为整数=strInput.Length()
作为整数的Dim IWORD=ILENGHT/iSize+IIf((ILENGHT Mod iSize 0),1,0)
雷迪姆街(IWORD)
尺寸j为整数=0,i为整数
对于i=0到i长度,步进iSize
strA(j)=中间(strInput,i+1,iSize)
j=j+1
接下来我
返回区
端函数
子页_加载()
Dim id为整数=5
将页面设置为整数=2
Dim CHRSCONTPERPAGE为整数=1000
Dim topic As String=“”(从主题中的s选择s.id=id)。first()。详细信息
Dim STopic=按大小拆分(主题,CHRSCONTPERPAGE)
如果页面>停止长度,则
页码=1
如果结束
lblTopic.text=STopic(第1页)
端接头
Public Function SplitBySize(ByVal strInput As String, ByVal iSize As Integer) As String()
Dim strA() As String
Dim iLength As Integer = strInput.Length()
Dim iWords As Integer = iLength / iSize + IIf((iLength Mod iSize 0), 1, 0)
ReDim strA(iWords)
Dim j As Integer = 0, i As Integer
For i = 0 To iLength Step iSize
strA(j) = Mid(strInput, i + 1, iSize)
j = j + 1
Next i
Return strA
End Function
Sub Page_Load()
Dim id As Integer = 5
Dim page As Integer = 2
Dim chrsCountPerPage As Integer = 1000
Dim topic As String = "" '(From s In topics Where s.id = id Select s).first().details
Dim STopic = SplitBySize(topic, chrsCountPerPage)
If page > STopic.Length Then
page = 1
End If
lblTopic.text = STopic(page - 1)
End Sub