65.9K
CodeProject 正在变化。 阅读更多。
Home

带分页模板的 FormView

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (6投票s)

2009年5月6日

CPOL

2分钟阅读

viewsIcon

44506

downloadIcon

1209

创建类似于良好 GridView 分页模板的分页模板需要什么。

FormViewModified

引言

我见过许多优秀的 GridView 分页模板,但 FormView 模板却很少。我想看看创建类似于良好 GridView 分页模板的分页模板需要什么,我想我已经找到了一个。我惊讶于它实际上与创建 GridView 分页模板非常相似,但存在一些明显的区别。

背景

我创建的控件称为 FormViewModified,其分页模板具有以下特征:

  1. DropDownList 分页控件
  2. 如果您更喜欢使用它们而不是 DropDownList,则可以使用箭头分页
  3. 总记录数
  4. 打印按钮
  5. 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)

在任何情况下,FormViewGridView,您都可以在此处创建分页模板的界面。例如,如果您想创建一个标签,您可以使用以下逻辑来完成:

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

© . All rights reserved.