winform(ListView及数据库连接)

Posted fei!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("添加失败!");
              }
            }
        }
}
添加代码部分

 

以上是关于winform(ListView及数据库连接)的主要内容,如果未能解决你的问题,请参考以下文章

WinForm ListView控件属性及用法

C#实战:WinForm控件ListView快速上手

winform中ListView绑定问题

winform listview 分页

winform。 listview 更新数据后刷新

C# winform listview 选中的复选框排序