一、ListView:列表展示数据
1、视图 - 在其右上方小箭头点击将视图改为Largelcon;或右键属性在外观View将其改为Details2、设置列头 - 在其右上方小箭头点击选择编辑列,然后添加列名;或右键属性-行为-Columns3、添加行数据 - 在其右上方小箭头点击选择编辑项,然后将属性Text改名,即第一列,添加成员即其它列;或右键属性-行为-Items-----------------------------------------------------------------------------二、连接数据库:1、建立实体类Student、Subject和数据访问类StudentData、SubjectData2.调用StudentData类中的Select方法,将全部数据取出来Listlist = new StudentData().Select();
foreach (Student S in list){ListViewItem li = new ListViewItem();li.Text = S.Code;li.SubItems.Add(S.Name);li.SubItems.Add(S.Sexstr);li.SubItems.Add(S.Birstr);li.SubItems.Add(S.SubjectName);listView1.Items.Add(li);}
4.窗体加载后自动绑定显示ListView中的数据
办法:数据绑定代码写在窗体的构造函数中5.给用户展示最终数据(属性扩展) 6.行号 用C#变量循环++来实现7.数据重复绑定 在绑定之前清空Items集合listView1.Items.Clear();8.选中一行数据 外观 - FullRowSelect:选择其中一项是否选中整行 CheckBoxes:复选框 GridLines:网格线 行为 - HideSelection :当控件没有焦点时,是否移除选定项的突出显示 HeaderStyle:列表头的样式 HoverSelection :鼠标悬浮在项上选择项,不好用,需停顿一会,通常与CheckBoxes连用 重点:1、数据如何绑定上去2、如何将选中的数据取出来
一个是FullRowSelect属性为True可以选择整行数据(ListView1.SelectedItems)if (listView1.SelectedItems.Count > 1)//选择了多行{MessageBox.Show("修改只允许选择一行");}else if (listView1.SelectedItems.Count == 1){foreach (ListViewItem li in listView1.SelectedItems){if (li.Selected){MessageBox.Show(li.SubItems[0].Text + li.SubItems[1].Text + li.SubItems[2].Text + li.SubItems[3].Text + li.SubItems[4].Text + li.SubItems[5].Text);}}} else//未选中 { MessageBox.Show("请先选中您要修改的数据"); }
foreach (ListViewItem li in listView1.CheckedItems){if (li.Checked){MessageBox.Show(li.SubItems[0].Text + li.SubItems[1].Text + li.SubItems[2].Text + li.SubItems[3].Text + li.SubItems[4].Text + li.SubItems[5].Text);}}
删除代码部分:
删除限制:
1、不能不选 2、多条数据如果有未删除的,提示一下,删除成功几条,未成功几条,未成功是那几条private void button2_Click(object sender, EventArgs e) { int DelCount = 0; //要删除的总条数 int count = 0; //已经删除的条数 string NotDelete = ""; if (listView1.CheckedItems.Count <= 0) { MessageBox.Show("请先选中您要删除的数据"); } else { DelCount = listView1.CheckedItems.Count; foreach(ListViewItem li in listView1.CheckedItems) { if(li.Checked) { bool ok = new StudentData().delete(li.SubItems[1].Text); if (ok) { count += 1; } else { NotDelete += li.SubItems[1].Text + ","; } } } NewMethod(); if (count == DelCount) { MessageBox.Show("删除成功"); } else { MessageBox.Show("删除失败!要删除" + DelCount + "条数据,未删除" + (DelCount - count) + "条数据,未删除的用户名为:" + NotDelete + ""); } } }
添加限制:
1.编号不能为空,且编号不能在数据库中查到
2.姓名不能为空;
public partial class Form2 : Form { Form1 F1 = null; public Form2(Form1 f1) { InitializeComponent(); F1 = f1; Listslist = new SubjectData().select(); Usub.DataSource = slist; Usub.ValueMember = "SubjectCode"; Usub.DisplayMember = "SubjectName"; } bool c = false;//判断编号是否存在 private void textBox1_TextChanged(object sender, EventArgs e) { Student s = new StudentData().select(UCode.Text.Trim());//调用StudentData类的查询方法 if (s == null) { code1.Text = ""; c = false; } else { code1.Text = "此编号已存在!"; c = true; } } bool n = false;//判断姓名是否为空 private void button1_Click(object sender, EventArgs e) { if(UCode.Text=="") { code1.Text = "编号不能为空!"; c = true; } if(UName.Text=="") { name1.Text="姓名不能为空"; n=false; } else { n=true; name1.Text=""; } Student S1 = new Student(); if(c==false&&n) { S1.Code = UCode.Text.Trim(); S1.Name = UName.Text.Trim(); S1.Sex = ra_true.Checked; S1.Birthday = BIR.Value; S1.SubjectCode = Usub.SelectedValue.ToString(); bool bo= new StudentData().Insert(S1); if (bo) { MessageBox.Show("添加成功!"); F1.NewMethod(); this.Close(); } else { MessageBox.Show("添加失败!"); } } }}