//数据显示,刷新 public void F5() { listView1.Items.Clear(); List<Students> Stu = new StudentsData().SeletAll(F1.textBox1.Text); foreach (Students s in Stu) { ListViewItem li = new ListViewItem(); li.Text = s.Ids.ToString(); li.SubItems.Add(s.Code); li.SubItems.Add(s.Name); li.SubItems.Add(s.Sexdd); li.SubItems.Add(s.Age.ToString()); li.SubItems.Add(s.Birthday.ToString("yyyy年MM月dd日")); li.SubItems.Add(s.Nationna); li.SubItems.Add(s.ClassNa); li.SubItems.Add(s.Score.ToString()); listView1.Items.Add(li); } }
ListView控件是一个winform自带的表格型的应用数据展示控件
好处:是功能比较完善,不需要再自己设置
缺点:不好的地方就是不能设置控件中单元格的大小,字体变大之后超出部分就会隐藏,不能直接输入内容,
要将表中的数据展示出来,需要做到以下几步:
1.先设置好ListView的列名,确定好要展示的的数据有几列
(1)如何设置列名:
点击行为属性Columns,可以设置要设置的列名(text),可以设置很多属性,基本和其他控件一致,如图:
2.查询要展示的表的内容,把这个写成一个方法,方便别的Form调用
//查询所有学生信息 public List<Students> SeletAll(string a) { List<Students> Stu = new List<Students>(); cmd.CommandText = "select *from Students where Adm=@a order by Ids asc"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a", a); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows) { while (dr.Read()) { Students s = new Students(); s.Ids = Convert.ToInt32(dr["Ids"]); s.Code = dr["Code"].ToString(); s.Name = dr["Name"].ToString(); s.Sex = Convert.ToBoolean(dr["Sex"]); s.Nation = dr["Nation"].ToString(); s.Birthday = Convert.ToDateTime(dr["Birthday"]); s.Class = dr["Class"].ToString(); s.Score = Convert.ToInt32(dr["Score"]); Stu.Add(s); } } conn.Close(); return Stu; }
3.将数据关联起来
这个写成了一个方法,方便在每次重载时调用,并能保证数据传递后调用刷新的方法
//数据显示,刷新 public void F5() { listView1.Items.Clear(); List<Students> Stu = new StudentsData().SeletAll(F1.textBox1.Text); foreach (Students s in Stu) { ListViewItem li = new ListViewItem(); li.Text = s.Ids.ToString(); li.SubItems.Add(s.Code); li.SubItems.Add(s.Name); li.SubItems.Add(s.Sexdd); li.SubItems.Add(s.Age.ToString()); li.SubItems.Add(s.Birthday.ToString("yyyy年MM月dd日")); li.SubItems.Add(s.Nationna); li.SubItems.Add(s.ClassNa); li.SubItems.Add(s.Score.ToString()); listView1.Items.Add(li); } }
4.获取选中数据的各种操作
(1)一次删除多个信息
if (listView1.CheckedItems.Count <= 0) { MessageBox.Show("请先选中学生信息!"); } else { int count = 0; int Nxx = listView1.CheckedItems.Count; List<int> Lt = new List<int>(); foreach (ListViewItem li in listView1.CheckedItems) { Lt.Add(Convert.ToInt32(li.Text)); } for (int cxx = 0; cxx < Nxx; cxx++) { if (new StudentsData().Delete(Lt[cxx], F1.textBox1.Text)) { count++; } } F5(); MessageBox.Show("学生信息删除成功,本次共删除" + count + "名学生."); }