一般情况下,如果需要在程序中显示数据记录,人们通常使用的工具可能是DataGridView控件。不可否认,使用DataGridView控件来完成这种工作非常实用简单。但是在实际工作中,也许它并不能满足我们的要求。这个时候,你可以尝试用ListView来显示你的数据记录。         ListView(列表)是.Net FreameWork 中的一个常用组件,常常被使用显示比较庞大的数据信息。 本文将利用这一控件来讲解如何使用 ListView来显示数据。 笔者使用的开发工具为 VS2008+MySql。虽然这种组合会让某些人感到很不爽,但是不可否认,它很简洁。

        首先,建立一个数据连接。 具体的原理本文就不再讲解了。直接上源: 

1 OdbcConnection DBConn = new OdbcConnection(
2     "Driver={Mysql odbc 5.1 driver};" +
3     "Server=localhost;" +
4     "database=listdata;" +
5     "UID=root");
6 DBConn.Open();
 

          对ListView控件进行属性设置主要有如下属性: 

1 listView1.GridLines = true ;//显示各个记录的分隔线
2 listView1.FullRowSelect = true ; //要选择就是一行
3 listView1.View = View.Details ;//定义列表显示的方式
4 listView1.Scrollable = true ; //需要时候显示滚动条
5 listView1.MultiSelect = false ; // 不可以多行选择 

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

        根据此可设计以下代码:

1 while (reader.Read())
2 {
3     ListViewItem lvi = new ListViewItem();
4     lvi.SubItems[0].Text = reader["name"].ToString();
5     lvi.SubItems.Add(reader["age"].ToString());
6     lvi.SubItems.Add(reader["city"].ToString());
7     lvi.SubItems.Add(reader["qq"].ToString());
8     listView1.Items.Add(lvi);                   
9 }
 

 最后,不忘了将数据连接关闭 

1 DBConn.Close();
 

 MySql数据库表设计,Test表:

最终效果:

完整代码: 

01 using System;
02 using System.Collections.Generic;
03 using System.ComponentModel;
04 using System.Data;
05 using System.Drawing;
06 using System.Linq;
07 using System.Text;
08 using System.Windows.Forms;
09
10 using System.Data.Odbc;
11 using System.Data.OleDb;
12 namespace ListView
13 {
14     public partial class Form1 : Form
15     {
16         OdbcConnection DBConn = new OdbcConnection(
17             "Driver={Mysql odbc 5.1 driver};" +
18             "Server=localhost;" +
19             "database=listdata;" +
20             "UID=root");
21        
22         public Form1()
23         {
24             InitializeComponent();
25         }
26
27         private void button1_Click(object sender, EventArgs e)
28         {
29             DBConn.Open();
30             OdbcCommand cmd = new OdbcCommand("Select * from test",DBConn);
31             OdbcDataReader reader = cmd.ExecuteReader();
32             this.listView1.Items.Clear();
33             while (reader.Read())
34             {
35                 ListViewItem lvi = new ListViewItem();
36                 lvi.SubItems[0].Text = reader["name"].ToString();
37                 lvi.SubItems.Add(reader["age"].ToString());
38                 lvi.SubItems.Add(reader["city"].ToString());
39                 lvi.SubItems.Add(reader["qq"].ToString());
40                 listView1.Items.Add(lvi);                   
41             }
42             DBConn.Close();
43         }
44
45     }
46 }