ListView属性中,Items是行的总集合,Items集合中的每一个是一行,Items集合里面有ListViewItem集合,这个集合实例化:ListViewItem li=new ListViewItem(); li.text是第一行的第一列,SubItems集合是li里面的集合,li.SubItems子集是每一行的、除了第一列的其他列。
1、视图
(1)点击图像上面的“小三角”,将视图设置为Details。--外观-view可更改。
(2)表列:点击“设置列”,“添加(A)”,出现columnHeader1.....这是表的列,设置Text,此为列名。------属性里面的行为-Colums
(3)表行:点击上面“数据”的“Users”结合,点击"添加",添加的项为表的剩余的列。--属性里面的行为-Items
(4)数据库连接:
以以前Users表为例,建立App_Code文件夹,添加实体Student类和数据访问类UsersData。
数据访问类建立查询Student表的全部信息的方法:Pulic list<Users> list select(){代码}
在form1的表的Button设置点击事件:第一:先将全部数据取出来 List<Users> list=new UsersData().Select();
第二:将数据导入到ListView中去。
foreach (Users a in u) { ListViewItem li = new ListViewItem(); li.Text = a.UserName; li.SubItems.Add(a.Password); li.SubItems.Add(a.NickName); li.SubItems.Add(a.Sex?"男":"女"); li.SubItems.Add(a.Birthday.ToString("yyyy年MM月dd日")); li.SubItems.Add(a.Nation); listView1.Items.Add(li); }
详细总代码如下:
//实体类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WindowsFormsApplication33.App_Code { public class Users { private string _UserName; public string UserName { get { return _UserName; } set { _UserName = value; } } private string _Password; public string Password { get { return _Password; } set { _Password = value; } } private string _NickName; public string NickName { get { return _NickName; } set { _NickName = value; } } private bool _Sex; public bool Sex { get { return _Sex; } set { _Sex = value; } } private DateTime _Birthday; public DateTime Birthday { get { return _Birthday; } set { _Birthday = value; } } private string _Nation; public string Nation { get { return _Nation; } set { _Nation = value; } } } }
//数据访问类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; namespace WindowsFormsApplication33.App_Code { public class UserData { SqlConnection cnn = null; SqlCommand cmd = null; public UserData() { cnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123"); cmd = cnn.CreateCommand(); } public List<Users> select()//查询全部信息,返回集合 { List<Users> u = new List<Users>(); cmd.CommandText = "select * from Users"; cnn.Open(); SqlDataReader ss = cmd.ExecuteReader(); if (ss.HasRows) { while (ss.Read()) { Users a = new Users(); a.UserName = ss[0].ToString(); a.Password = ss[1].ToString(); a.NickName = ss[2].ToString(); a.Sex = Convert.ToBoolean(ss[3]); a.Birthday = Convert.ToDateTime(ss[4]); a.Nation = ss[5].ToString(); u.Add(a); } } cnn.Close(); return u; } } }
//点击事件 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WindowsFormsApplication33.App_Code; namespace WindowsFormsApplication33 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void listView1_SelectedIndexChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { List<Users> u = new UserData().select();//获得集合 foreach (Users a in u) { ListViewItem li = new ListViewItem(); li.Text = a.UserName; li.SubItems.Add(a.Password); li.SubItems.Add(a.NickName); li.SubItems.Add(a.Sex?"男":"女"); li.SubItems.Add(a.Birthday.ToString("yyyy年MM月dd日")); li.SubItems.Add(a.Nation); listView1.Items.Add(li); } } private void Form1_Load(object sender, EventArgs e) { } } }
2、问题:怎么才能打开窗体,自动在窗体中显示数据库的内容
办法:数据查询显示代码的方法写在窗体的构造函数中。
3、怎么给用户展示最终数据
办法:数据库的属性扩展。
4、在窗体中怎么显示行号
办法:在函数外int i=1;在函数内循环时设置第一列的i++;
5、选中一行数据
如何将选中的数据取出来
一个是FullRowSelect属性为True可以选择整行数据
ListView1.SelectedItems
foreach (ListViewItem li in listView1.SelectedItems) { if (li.Selected) { MessageBox.Show(li.SubItems[1].Text); } }
另一个是CheckBoxes属性为True时,可以按照复选框来选择整行数据
ListView1.CheckedItems
foreach (ListViewItem li in listView1.SelectedItems) { if (li.Checked) { MessageBox.Show(li.SubItems[1].Text); } }
完!