博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform(ListView及数据库连接)
阅读量:5154 次
发布时间:2019-06-13

本文共 5069 字,大约阅读时间需要 16 分钟。

一、ListView:列表展示数据

1、视图 -
在其右上方小箭头点击将视图改为Largelcon;或右键属性在外观View将其改为Details
2、设置列头 -
在其右上方小箭头点击选择编辑列,然后添加列名;或右键属性-行为-Columns
3、添加行数据 -
在其右上方小箭头点击选择编辑项,然后将属性Text改名,即第一列,添加成员即其它列;或右键属性-行为-Items
-----------------------------------------------------------------------------
二、连接数据库:
1、建立实体类Student、Subject和数据访问类StudentData、SubjectData
2.调用StudentData类中的Select方法,将全部数据取出来

List
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
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("添加失败!"); } } }}
添加代码部分

 

转载于:https://www.cnblogs.com/zblc2016/p/5906740.html

你可能感兴趣的文章
单片机定时器中断原理
查看>>
Ignite 配置更新Oracle JDBC Drive
查看>>
partproble在RHEL 6下无法更新分区信息
查看>>
c网购物车流程图
查看>>
xapth(笔记)
查看>>
HTTP 错误 403.6 - Forbidden 解决方案
查看>>
一个小例子介绍Obj-C的函数命名方式
查看>>
关于Bootstrap的理解
查看>>
十种基本排序算法
查看>>
hdu 2089 数位dp入门
查看>>
I/O的一些简单操作
查看>>
Handbook之012:函数类别构型
查看>>
php取整函数ceil,floor,round,intval的区别
查看>>
局部富文本
查看>>
例题6-7 树的层次遍历
查看>>
2019-2-15 日记
查看>>
那些年我们跳过的 IE坑
查看>>
产生式模型和判别式模型
查看>>
2015.10.13课堂
查看>>
国内最火5款Java微服务开源项目
查看>>