winform(ListView及數據庫連接)


一、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("添加失敗!");
              }
            }
        }
}

添加代碼部分

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM