zoukankan      html  css  js  c++  java
  • 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("添加失败!");
                  }
                }
            }
    }
    
    添加代码部分
  • 相关阅读:
    设计模式学习总结
    算法时间复杂度和空间复杂度表示
    SQLite简单使用
    接口,组合和继承的想法
    二叉树的学习
    Oracle 常用命令大汇总
    Oracle 最常用功能函数经典汇总
    oracle 常用command
    历史最牛演讲:Oracle总裁Yale演讲全文中英文对照
    深入abstract class和interface
  • 原文地址:https://www.cnblogs.com/1711643472qq/p/6059180.html
Copyright © 2011-2022 走看看