在Visual C#中用ListView显示数据记录

2016-02-19 17:09 21 1 收藏

下面,图老师小编带您去了解一下在Visual C#中用ListView显示数据记录,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - 编程语言 】

  如果要你在程序中显示数据库中的数据记录,你首先想用的显示工具肯定是DataGrid。当然用DataGrid显示数据记录是一种既常用又简单的方法。但是在程序控制方面,它却无法那么随心所欲。本文就是介绍另外一种显示数据记录的方法--用ListView来显示数据记录,由于他是手动加入记录,虽然在程序设计中稍微烦琐了些,但对于那些在特殊的显示要求,却往往能够满足要求。

  在.Net FrameWork SDK中定义了许多组件,Visual C#就是通过获得这些组件的实例来丰富自己的界面的。列表(ListView)是程序设计中一个常用的组件,由于其自身的特点,往往被使用显示比较庞大的数据信息。本文就是利用他的这个特点来看看它如何来显示数据记录。

  一. 程序设计和运行的环境

  (1).微软视窗2000专业版本

  (2)..Net FrameWork SDK Beta 2

  (3).Microsoft Data Acess Component 2.6 (MDAC2.6)

  二. 程序设计的具体思路

  (1).首先要建立数据连接,打开数据集

  (2).对列表进行初始化,并使得列表的显示条件符合数据记录的条件

  (3).对数据集中的数据记录进行遍历,在遍历中添加记录到列表中

  (4).关闭数据集,关闭数据连接

  三. 具体的实现步骤

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  (1).首先要建立数据连接,打开数据集

  对于如何建立数据连接和获得数据集的内容可以参考本站的一篇文章--《在Visual C#中访问不同的数据库》,在此文中对此类问题有比较详细的介绍,本文就不多叙述,具体实现语句如下:

  

// 定义数据连接的字符串,程序中使用的是Acess 2000数据库private static string strConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " +Application.StartupPath + "MY.MDB" ;private OleDbConnection conConnection = new OleDbConnection ( strConnect ) ;OleDbDataReader reader ;// 获得Person里面的所以数据记录string strCommand = "SELECT * FROM Persons" ;this.conConnection.Open ( ) ; // 打开数据连接OleDbCommand cmd = new OleDbCommand ( strCommand , conConnection ) ;reader = cmd.ExecuteReader ( ) ; file://获得数据集
  

  (2).对列表进行初始化,并使得列表的显示条件符合数据记录的条件。需要说明的是在下面源代码中,lv是在Class中定义的一个ListView的一个实例

  

// 初始化ListViewlv = new ListView ( ) ;lv.Left = 0 ;lv.Top = 0 ;lv.Width = 700 ;lv.Height = this.ClientRectangle.Height ;lv.GridLines = true ; file://显示各个记录的分隔线lv.FullRowSelect = true ; file://要选择就是一行lv.View = View.Details ; file://定义列表显示的方式lv.Scrollable = true ; file://需要时候显示滚动条lv.MultiSelect = false ; // 不可以多行选择lv.HeaderStyle = ColumnHeaderStyle.Nonclickable ;// 针对数据库的字段名称,建立与之适应显示表头lv.Columns.Add ( "姓名" , 60 , HorizontalAlignment.Right ) ;lv.Columns.Add ( "住宅电话" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "办公电话" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "移动电话" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "居住地点" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "工作单位" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "电子邮件" , 100 , HorizontalAlignment.Left ) ;lv.Visible = true ;

  (3).对数据集中的数据记录进行遍历,在遍历中添加记录到列表中。

  可以利用数据集中的Read ( )方法,来实现对数据记录的遍历,Read ( )方法是首先指向首数据记录,并判断从此记录是否为尾记录,如果不是则返回false,如果是则返回true。并且如果不是尾记录则自动把数据指针移到下一条记录上,然后在判断此记录是否是尾记录,如此循环,直至到尾记录为止。根据此可设计以下代码:

  

while ( reader.Read ( ) ){ListViewItem li = new ListViewItem ( ) ;li.SubItems.Clear ( ) ;li.SubItems[0].Text = reader["name"].ToString ( ) ;li.SubItems.Add ( reader["HomePhone"].ToString ( ) ) ;li.SubItems.Add ( reader["WorkPhone"].ToString ( ) ) ;li.SubItems.Add ( reader["MobilePhone"].ToString ( ) ) ;li.SubItems.Add ( reader["City"].ToString ( ) ) ;li.SubItems.Add ( reader["Address"].ToString ( ) ) ;li.SubItems.Add ( reader["Email"].ToString ( ) ) ;lv.Items.Add ( li ) ;}

  (4). 关闭数据集,关闭数据连接。

  关闭数据集和关闭数据连接是很容易的,只要调用这二个对象的Close()方法即可,也只要调用在程序中具体如下:

  

reader.Close ( ) ; file://关闭数据集this.conConnection.Close ( ) ; // 关闭数据连接
四. 程序运行结果界面和程序源代码(list.cs):

  程序源代码:

  

using System ;using System.Windows.Forms ;using System.Drawing ;using System.Data ;using System.Data.OleDb ;class MainForm : Form{ // 定义数据连接的字符串private static string strConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " +Application.StartupPath + "MY.MDB" ;private OleDbConnection conConnection = new OleDbConnection ( strConnect ) ;private ListView lv ;public MainForm ( ){// 初始化Formthis.Left = 0 ;this.Top = 0 ;this.Text = "在ListView中显示数据库内容!" ;// 初始化ListViewlv = new ListView ( ) ;lv.Left = 0 ;lv.Top = 0 ;lv.Width = 700 ;lv.Height = this.ClientRectangle.Height ;lv.GridLines = true ; file://显示各个记录的分隔线lv.FullRowSelect = true ; file://要选择就是一行lv.View = View.Details ; file://定义列表显示的方式lv.Scrollable = true ; file://需要时候显示滚动条lv.MultiSelect = false ; // 不可以多行选择lv.HeaderStyle = ColumnHeaderStyle.Nonclickable ;// 针对数据库的字段名称,建立与之适应显示表头lv.Columns.Add ( "姓名" , 60 , HorizontalAlignment.Right ) ;lv.Columns.Add ( "住宅电话" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "办公电话" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "移动电话" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "居住地点" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "工作单位" , 100 , HorizontalAlignment.Left ) ;lv.Columns.Add ( "电子邮件" , 100 , HorizontalAlignment.Left ) ;lv.Visible = true ;OleDbDataReader reader ;string strCommand = "SELECT * FROM Persons" ;this.conConnection.Open ( ) ;// 打开数据连接OleDbCommand cmd = new OleDbCommand ( strCommand , conConnection ) ;reader = cmd.ExecuteReader ( ) ;//获得数据集// 不断往列表中添加数据记录while ( reader.Read ( ) ){ListViewItem li = new ListViewItem ( ) ;li.SubItems.Clear ( ) ;li.SubItems[0].Text = reader["name"].ToString ( ) ;li.SubItems.Add ( reader["HomePhone"].ToString ( ) ) ;li.SubItems.Add ( reader["WorkPhone"].ToString ( ) ) ;li.SubItems.Add ( reader["MobilePhone"].ToString ( ) ) ;li.SubItems.Add ( reader["City"].ToString ( ) ) ;li.SubItems.Add ( reader["Address"].ToString ( ) ) ;li.SubItems.Add ( reader["Email"].ToString ( ) ) ;lv.Items.Add ( li ) ;}reader.Close ( ) ; // 关闭数据集// 在Form中添加此列表this.Controls.Add ( lv ) ;// 关闭Form的时候,同时也关闭数据连接this.Closed+=new EventHandler ( this_Closed ) ;}protected void this_Closed ( object sender , EventArgs eArgs ){this.conConnection.Close ( ) ; file://关闭数据连接}public static void Main ( ){Application.Run ( new MainForm ( ) ) ;}}

  在成功编译了上面源程序代码以后,在同一目录下建立一个Acess 2000的数据库,命名为MY.MDB,然后在其中建立一张数据表,字段如下:name,HomePhone,WorkPhone,MobilePhone,City,Address,Email。此时运行编译后的程序就可以得到如下运行界面:

  图01:用ListView显示数据记录

  五. 对于其他数据库如何处理

  对于其他数据库也需要用ListView来显示数据记录,和上面的一个主要区别在于建立不同的数据字符串,下面就以SQL Server 7.0为例来简要说明:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  如果访问的数据库是SQL Server 7.0,只需要把上面源代码中的一条语句:

  

private static string strConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + Application.StartupPath + "MY.MDB" ;

  改变成:

  

private static string strConnect = "Provider=SQLOLEDB.1 ; Persist Security Info=False ; User ID = sa ; Initial Catalog=数据库名称; Data Source = 服务器名称 " ;

  即可。

  六. 总结

  本文试图用另外一种方法来显示数据记录,虽然在使用的时候比起正常的方法要烦琐

  些,但有更高的灵活度,并且也使得我们对于ListView组件的具体使用有了具体的和更高的认识。

来源:https://www.tulaoshi.com/n/20160219/1614374.html

延伸阅读
一、引言 1. 问题的引入 假设你设计的程序已经部署到用户的计算机上,并且能够正常运行了。但是有一天,用户打来了电话他们要求增加新的功能。确定了用户的需求后,你竟然发现原有的软件架构已经无法胜任新增任务的需求你需要重新设计这个应用了!但问题是,就算你又用了一个开发周期完成了用户需要的应用,却不能保证用户的需求...
摘要:本文论述了各种模式的线程(单线程、单元线程和自由线程)以及每种模式的使用方法。同时,还提供了一个使用线程的 C# 语言代码示例,以帮助您编写使用线程的应用程序。本文还讨论了多线程代码中的一些重要问题。 简介 编写多线程 Microsoft® 消息队列 (MSMQ) 触发器应用程序向来是一件让人畏惧的事情。不过,.NET 框架...
摘要:本文介绍了Excel对象、C#中的受管代码和非受管代码,并介绍了COM组件在.NET环境中的使用。 关键词:受管代码;非受管代码;Excel对象;动态连接库 引言 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在设计应用系统时,对于不同的用户...
在Visual Studio.NET Beta 1版本中访问IBM DB2等非SQL Server数据库通常是使用ADO.NET的ODBC方法,而在Beta 2中则改用OLE DB方式存取数据库。 Beta1中连接字符串主要需声明数据库的ODBC的DNS名字,但Beta 2中的OLE DB连接的字符串就较复杂了,使用的类也不相同。由于DB2等数据库在大型机等应用中使用非常广泛,.NET自然会全力支持此类...
命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉使用类的其他开发人员这两个类是如何相关的以及如何使用它们: n...

经验教程

722

收藏

55
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部