[转帖]在Visual C#中用ListView显示数据记录
如果要你在程序中显示数据库中的数据记录,你首先想用的显示工具肯定是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).关闭数据集,关闭数据连接
三. 具体的实现步骤
(
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的一个实例
// 初始化ListView
lv = 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 ( ) ; // 关闭数据连接
|