HOW TO:使用 Visual C# .NET 对 DataGrid Windows 控件执行分页
| 文章 ID | : | 307710 |
| 最后更新日期 | : | 2002年6月21日 |
| 版本 | : | 1.0 |
本文的发布号曾为 CHS307710
有关本文的 Microsoft Visual Basic .NET 版本,请参见
305271。
有关本文的 Microsoft Visual J# .NET 版本,请参见 CHS320626。
本文引用下面的 Microsoft .NET 框架类库名称空间:
有关本文的 Microsoft Visual J# .NET 版本,请参见 CHS320626。
本文引用下面的 Microsoft .NET 框架类库名称空间:
| • | System |
| • | System.Data |
| • | System.Data.SqlClient |
本任务的内容
| • | 概要 | ||||||
| |||||||
| • | 参考 |
概要
数据网格 Web 控件有内置的自动或自定义分页功能,但是
数据网格 Windows 控件却没有这些功能。本文介绍如何为
数据网格 Windows 控件创建简单的分页机制。
本文中的代码示例利用了 数据集对象。在 ADO.NET 中, 数据集对象是通过单次操作填充的,它们始终驻留在内存中。如果您在使用一个大型 数据集,本文介绍如何以编程方式按块区或页面形式显示数据。
本示例将 Microsoft SQL Server Northwind 数据库中的 Customers 表用作数据库后端。如果连接到任何其他数据库或一个不同的表,请确保相应地更新代码。
此技巧有一些局限性。有关更多信息,请参阅 疑难解答一节。
返回页首
本文假定您熟悉下列主题:
返回页首
返回页首
返回页首
本文中的代码示例利用了 数据集对象。在 ADO.NET 中, 数据集对象是通过单次操作填充的,它们始终驻留在内存中。如果您在使用一个大型 数据集,本文介绍如何以编程方式按块区或页面形式显示数据。
本示例将 Microsoft SQL Server Northwind 数据库中的 Customers 表用作数据库后端。如果连接到任何其他数据库或一个不同的表,请确保相应地更新代码。
此技巧有一些局限性。有关更多信息,请参阅 疑难解答一节。
返回页首
要求
下面的列表列出了推荐使用的硬件、软件、网络结构以及所需的 Service Pack:| • | Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Windows NT 4.0 Server |
| • | Microsoft Visual Studio .NET |
| • | Microsoft SQL Server 7.0 或更高版本 |
| • | Visual C# .NET |
| • | ADO.NET 基础知识和语法 |
向 DataGrid Windows 控件添加分页的步骤
当您对 DataGrid 进行分页时,您会在页面大小的"块区"中显示数据,即,一次显示一页记录。下面的代码示例将每页的 DataRow 对象从内存中的 数据集复制到一个临时表中。该临时表然后会绑定到 DataGrid(数据网格)控件。| 1. | 打开新的 Visual C# .NET Windows 应用程序项目。 | |||||||||||||||||||||||||||
| 2. | 添加 DataGrid 控件,将其 ReadOnly 属性设置为 True。 | |||||||||||||||||||||||||||
| 3. | 将以下附加控件添加到 Form1 上,然后按如下所示设置它们的属性:
| |||||||||||||||||||||||||||
| 4. | 将下面的代码复制并粘贴到 Form1 的代码窗口的顶部。确保对每个名称空间只引用一次。默认情况下可能已经引用 System 和 System.Data。 | |||||||||||||||||||||||||||
| 5. | 复制以下代码并将其粘贴到公共类 Form1 的顶部 以便为 Form1 声明窗体级变量: | |||||||||||||||||||||||||||
| 6. | 复制以下代码并将其粘贴到紧挨在静态的空 Main 方法之后的位置,以使其作用范围为窗体级: | |||||||||||||||||||||||||||
| 7. | 将以下代码粘贴到 Form1_Load 事件过程中: | |||||||||||||||||||||||||||
| 8. | 修改上述代码中出现的连接字符串,使之适合您的环境: | |||||||||||||||||||||||||||
| 9. | 双击 First Page 以打开 btnFirstPage 的代码窗口。复制以下代码并将其粘贴到 btnFirstPage_Click 事件过程中: | |||||||||||||||||||||||||||
| 10. | 双击 Next Page 以打开 btnNextPage 的代码窗口。复制以下代码并将其粘贴到 btnNextPage_Click 事件过程中: | |||||||||||||||||||||||||||
| 11. | 双击 Previous Page 以打开 btnPreviousPage 的代码窗口。复制以下代码并将其粘贴到 btnPreviousPage_Click 事件过程中: | |||||||||||||||||||||||||||
| 12. | 双击 Last Page 以打开 btnLastPage 的代码窗口。复制以下代码并将其粘贴到 btnLastPage_Click 事件过程中: | |||||||||||||||||||||||||||
| 13. | 按 F5 键生成并运行此项目。 | |||||||||||||||||||||||||||
| 14. | 默认情况下,Page Size(页面大小)设置为 5 条记录。可以在文本框中更改此设置。 | |||||||||||||||||||||||||||
| 15. | 单击 Fill Grid。注意,DataGrid(数据网格)中填充了 5 项记录。 | |||||||||||||||||||||||||||
| 16. | 单击 First Page、Next Page、Previous Page 和 Last Page 可以在不同的页面之间浏览。 |
疑难解答
| • | 此技巧仅适用于只读 DataGrid 控件。当您向 DataTable 对象中导入一行数据时,实际上是创建了一个副本。所以,所作的更改将不会保存到主表中。 |
| • | 如果想让用户能够通过一个 DataRelation 对象定位到子记录,或者如果您的记录以父子关系相链接并且同时出现在窗体上,则无法使用此技巧(也不能用集合或数组)。 |
参考
有关 ADO.NET 的更多信息,请访问以下 MSDN Web 站点:
Accessing Data with ADO.NET(使用 ADO.NET 访问数据)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaccessingdatawithadonet.asp
有关更多信息,请参阅 Microsoft .NET 框架 SDK 文档:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaccessingdatawithadonet.asp
.NET 框架 SDK
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netstart/html/sdkstart.asp
返回页首
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netstart/html/sdkstart.asp
这篇文章中的信息适用于:
| • | Microsoft .NET Framework 1.1 Service Pack 1 |
| • | Microsoft Visual C# .NET 2002 标准版 |
关键字: | kbhowto kbhowtomaster kbsqlclient kbsystemdata KB307710 |
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、
本文介绍使用 Visual C#.NET 对 DataGrid Windows 控件执行分页的相关内容,包含任务概要、要求、添加分页的步骤以及疑难解答等信息,适用于相关开发场景。



1624

被折叠的 条评论
为什么被折叠?



