前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Convert string to DateTime

Convert string to DateTime

作者头像
阿新
发布2018-04-13 10:23:05
1.8K0
发布2018-04-13 10:23:05
举报
文章被收录于专栏:c#开发者c#开发者

如何使用 Visual C# .NET 对 DataGrid Windows 控件执行分页

察看本文应用于的产品

文章编号

:

307710

最后修改

:

2005年3月23日

修订

:

3.1

本文的发布号曾为 CHS307710

本页

概要

要求

向 DataGrid Windows 控件中添加分页的步骤

疑难解答

参考

这篇文章中的信息适用于:

概要

DataGrid Web 控件有内置的自动或自定义分页功能,而 DataGrid Windows 控件则没有。本文演示了如何为 DataGrid Windows 控件创建简单的分页机制。 本文的代码示例利用了 DataSet 对象。在 ADO.NET 中,DataSet 对象是通过单次操作填充的并且永驻在内存中。如果您正在使用一个大型 DataSet,本文将为您介绍如何通过编程按块或页显示数据。 本示例以 Microsoft SQL Server 罗斯文数据库中的“客户”表为数据库后端。如果您连接的是其他数据库或表,请确保相应更新代码。 此方法有一定局限性。请参考疑难解答 一节以了解详细信息。

回到顶端

要求

下表列出了推荐使用的硬件、软件、网络架构以及所需的 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 对象从内存中的 DataSet 复制到一个临时表中。该临时表随后与 DataGrid 控件绑定。

1.

打开一个新的 Visual C# .NET Windows 应用程序项目。

2.

添加 DataGrid 控件,将其 ReadOnly 属性设置为 True。

3.

将下列附加控件放置在 Form1 上,并按如下所示设置它们的属性: 控件 Name 属性 Text 属性 Button btnFirstPage First Page Button btnNextPage Next Page TextBox txtDisplayPageNo Button btnPreviousPage Previous Page Button btnLastPage Last Page TextBox txtPageSize 5 Button btnFillGrid Fill Grid DataGrid dataGrid1

控件

Name 属性

Text 属性

Button

btnFirstPage

First Page

Button

btnNextPage

Next Page

TextBox

txtDisplayPageNo

Button

btnPreviousPage

Previous Page

Button

btnLastPage

Last Page

TextBox

txtPageSize

5

Button

btnFillGrid

Fill Grid

DataGrid

dataGrid1

控件

Name 属性

Text 属性

Button

btnFirstPage

First Page

Button

btnNextPage

Next Page

TextBox

txtDisplayPageNo

Button

btnPreviousPage

Previous Page

Button

btnLastPage

Last Page

TextBox

txtPageSize

5

Button

btnFillGrid

Fill Grid

DataGrid

dataGrid1

4.

复制以下代码并将其粘贴到 Form1 代码窗口的顶部。确保每个命名空间只被引用一次。默认情况下,可能已经引用 System 和 System.Data。using System; using System.Data; using System.Data.SqlClient;

5.

复制以下代码并将其粘贴到公共类 Form1 的顶部,以便为 Form1 声明窗体级变量:SqlDataAdapter da; DataSet ds; DataTable dtSource; int PageCount; int maxRec; int pageSize; int currentPage; int recNo;

6.

复制以下代码并将其粘贴到紧挨在静态的空 Main 方法之后,以使其作用范围为窗体级:private void LoadPage() { int i; int startRec; int endRec; DataTable dtTemp; //Clone the source table to create a temporary table. dtTemp = dtSource.Clone(); if (currentPage == PageCount) { endRec = maxRec; } else { endRec = pageSize * currentPage; } startRec = recNo; //Copy rows from the source table to fill the temporary table. for (i = startRec; i < endRec; i++) { dtTemp.ImportRow(dtSource.Rows[i]); recNo += 1; } dataGrid1.DataSource = dtTemp; DisplayPageInfo(); } private void DisplayPageInfo() { txtDisplayPageNo.Text = "Page " + currentPage.ToString() + "/ " + PageCount.ToString(); } private bool CheckFillButton() { // Check if the user clicks the "Fill Grid" button. if (pageSize == 0) { MessageBox.Show("Set the Page Size, and then click the Fill Grid button!"); return false; } else { return true; } }

7.

将以下代码粘贴到 Form1_Load 事件过程中: //Open Connection. SqlConnection conn = new SqlConnection("Server=server;uid=login;pwd=pwd;database=northwind"); //Set the DataAdapter's query. da = new SqlDataAdapter("select * from customers", conn); ds = new DataSet(); //Fill the DataSet. da.Fill(ds, "customers"); //Set the source table. dtSource = ds.Tables["customers"];

8.

修改上述代码中出现的连接字符串,使之适合您的环境:SqlConnection conn = new SqlConnection("Server=server;uid=login;pwd=pwd;database=northwind");

9.

双击 Fill Grid,打开 btnFillGrid 的代码窗口。复制以下代码并将其粘贴到 btnFillGrid_Click 事件过程中: // Set the start and max records. pageSize = Convert.ToInt32(txtPageSize.Text); maxRec = dtSource.Rows.Count; PageCount = maxRec / pageSize; //Adjust the page number if the last page contains a partial page. if ((maxRec % pageSize) > 0) { PageCount += 1; } // Initial seeings currentPage = 1; recNo = 0; // Display the content of the current page. LoadPage();

10.

双击 First Page,打开 btnFirstPage 的代码窗口。复制以下代码并将其粘贴到 btnFirstPage_Click 事件过程中: if (CheckFillButton() == false) { return; } //Check if you are already at the first page. if (currentPage == 1) { MessageBox.Show("You are at the First Page!"); return; } currentPage = 1; recNo = 0; LoadPage();

11.

双击 Next Page,打开 btnNextPage 的代码窗口。复制以下代码并将其粘贴到 btnNextPage_Click 事件过程中: //If the user did not click the "Fill Grid" button, then return. if (CheckFillButton() == false) { return; } //Check if the user clicks the "Fill Grid" button. if (pageSize == 0) { MessageBox.Show("Set the Page Size, and then click the Fill Grid button!"); return; } currentPage += 1; if (currentPage > PageCount) { currentPage = PageCount; //Check if you are already at the last page. if (recNo == maxRec) { MessageBox.Show("You are at the Last Page!"); return; } } LoadPage();

12.

双击 Previous Page,打开 btnPreviousPage 的代码窗口。复制以下代码并将其粘贴到 btnPreviousPage_Click 事件过程中: if (CheckFillButton() == false) { return; } if (currentPage == PageCount) { recNo = pageSize * (currentPage - 2); } currentPage -= 1; //Check if you are already at the first page. if (currentPage < 1) { MessageBox.Show("You are at the First Page!"); currentPage = 1; return; } else { recNo = pageSize * (currentPage - 1); } LoadPage();

13.

双击 Last Page,打开 btnLastPage 的代码窗口。复制以下代码并将其粘贴到 btnLastPage_Click 事件过程中: if (CheckFillButton() == false) { return; } //Check if you are already at the last page. if (recNo == maxRec) { MessageBox.Show("You are at the Last Page!"); return; } currentPage = PageCount; recNo = pageSize * (currentPage - 1); LoadPage();

14.

按 F5 键生成并运行此项目。

15.

默认情况下,Page Size(页面大小)设置为 5 条记录。您可以在文本框中更改此设置。

16.

单击 Fill Grid。注意,DataGrid 中填入了 5 条记录。

17.

单击 First Page、Next Page、Previous Page 或 Last Page 可以来回浏览页面。

回到顶端

疑难解答

该方法只适用只读 DataGrid 控件。当您向临时 DataTable 对象中导入一行时,这只是一个副本,而您做的更改没有保存到主表中。

如果您想让用户能够通过一个 DataRelation 对象定位到子记录,或者如果您的记录以父子关系相链接并且同时出现在窗体上,则不能使用此方法(也不能用集合或数组)。

回到顶端

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2005-09-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何使用 Visual C# .NET 对 DataGrid Windows 控件执行分页
    • 概要
      • 要求
      • 向 DataGrid Windows 控件中添加分页的步骤
      • 疑难解答
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档