成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

在Visual C#中用ListView顯示數據記錄

2010-08-28 10:49:52來源:西部e網作者:

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

四. 程序運行結果界面和程序源代碼(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 ( )
{
// 初始化Form
this.Left = 0 ;
this.Top = 0 ;
this.Text = "在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 ;

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為例來簡要說明:

   如果訪問的數據庫是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組件的具體使用有了具體的和更高的認識。
關鍵詞:VS.NET

贊助商鏈接:

主站蜘蛛池模板: 温州市| 淳安县| 呼伦贝尔市| 浪卡子县| 日喀则市| 广州市| 友谊县| 禄丰县| 梁平县| 万安县| 汕尾市| 昌江| 萨迦县| 新干县| 宝应县| 常熟市| 昭觉县| 达州市| 五大连池市| 诸城市| 榕江县| 莱芜市| 宽城| 奉化市| 论坛| 中牟县| 桃江县| 荆门市| 蒙自县| 察哈| 喜德县| 封开县| 新建县| 休宁县| 库车县| 阿荣旗| 乐陵市| 西盟| 镇赉县| 嫩江县| 临澧县|