带分页模板的 FormView






4.71/5 (6投票s)
创建类似于良好 GridView 分页模板的分页模板需要什么。
引言
我见过许多优秀的 GridView
分页模板,但 FormView
模板却很少。我想看看创建类似于良好 GridView
分页模板的分页模板需要什么,我想我已经找到了一个。我惊讶于它实际上与创建 GridView
分页模板非常相似,但存在一些明显的区别。
背景
我创建的控件称为 FormViewModified
,其分页模板具有以下特征:
DropDownList
分页控件- 如果您更喜欢使用它们而不是
DropDownList
,则可以使用箭头分页 - 总记录数
- 打印按钮
- Word 导出按钮
Using the Code
要创建分页模板,首先必须将 AllowPaging
属性设置为 True
。接下来,对于服务器控件,您必须使用以下语句覆盖 InitializePager
方法:
Protected Overrides Sub InitializePager( _
ByVal row As FormViewRow, _
ByVal pagedDataSource As PagedDataSource )
如果您使用 AllowPaging
分页模板创建了服务器控件,您会发现它看起来与用于创建 GridView
分页模板的 Overrides
语句类似。
Protected Overrides Sub InitializePager( _
ByVal row As GridViewRow, _
ByVal columnSpan As Integer, _
ByVal pagedDataSource As PagedDataSource)
在任何情况下,FormView
或 GridView
,您都可以在此处创建分页模板的界面。例如,如果您想创建一个标签,您可以使用以下逻辑来完成:
Protected Overrides Sub InitializePager( _
ByVal row As FormViewRow, _
ByVal pagedDataSource As PagedDataSource)
Dim cell As New TableCell()
Dim Label As New Label
Label.ID = "Label1"
MessageLabel.Text = "I am a Label: "
cell.Controls.Add(Label)
End Sub
接下来,您需要在 Formview_Databound
事件中添加控件功能。一个简单的示例是,如果您想将页码添加到先前页面中创建的 Label
中,这将类似于以下内容:
Private Sub FormViewModified_DataBound(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.DataBound
Dim pageLabel As Label = _
CType(pagerRow.FindControl("Label"), Label)
If pageLabel IsNot Nothing Then
Dim currentPage As Integer = Me.PageIndex + 1
pageLabel.Text = "Page " & currentPage.ToString() & _
" of " & Me.PageCount.ToString()
End If
End Sub
完成此操作以及您希望添加的任何用于处理分页逻辑的控件后,分页器就完成了。
我提供了一个可供下载的示例,您可以根据需要对其进行修改。它将一个分页模板添加到 FormView
,模板显示在 FormView
的顶部。它包含一些分页逻辑下方的控件,我发现这些控件在几乎所有的 FormView
中都很有用。
此代码的完整源代码以及我创建的其他服务器控件以及示例网站,可从以下网址下载:http://www.joshuablackstone.com/Articles/JGBSolution.zip。