如果要你在程序中顯示數據庫中的數據記錄,你首先想用的顯示工具肯定是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 ) ; }