一、ListView:列表展示數據
1、視圖 -
在其右上方小箭頭點擊將視圖改為Largelcon;或右鍵屬性在外觀View將其改為Details
2、設置列頭 -
在其右上方小箭頭點擊選擇編輯列,然后添加列名;或右鍵屬性-行為-Columns
3、添加行數據 -
在其右上方小箭頭點擊選擇編輯項,然后將屬性Text改名,即第一列,添加成員即其它列;或右鍵屬性-行為-Items
-----------------------------------------------------------------------------
二、連接數據庫:
1、建立實體類Student、Subject和數據訪問類StudentData、SubjectData
2.調用StudentData類中的Select方法,將全部數據取出來
List<Student> list = new StudentData().Select();
3.將數據導入到ListView中去
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("請先選中您要修改的數據"); }
另一個是CheckBoxes屬性為True時,可以按照復選框來選擇整行數據(ListView1.CheckedItems)
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; List<Subject> slist = 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("添加失敗!"); } } } } 添加代碼部分