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 > )//选择了多行
{
MessageBox.Show("修改只允许选择一行");
}
else if (listView1.SelectedItems.Count == )
{
foreach (ListViewItem li in listView1.SelectedItems)
{
if (li.Selected)
{
MessageBox.Show(li.SubItems[].Text + li.SubItems[].Text + li.SubItems[].Text + li.SubItems[].Text + li.SubItems[].Text + li.SubItems[].Text);
}
}
}
else//未选中
{
MessageBox.Show("请先选中您要修改的数据");
}
另一个是CheckBoxes属性为True时,可以按照复选框来选择整行数据(ListView1.CheckedItems)
foreach (ListViewItem li in listView1.CheckedItems)
{
if (li.Checked)
{
MessageBox.Show(li.SubItems[].Text + li.SubItems[].Text + li.SubItems[].Text + li.SubItems[].Text + li.SubItems[].Text + li.SubItems[].Text);
}
}
删除代码部分:
删除限制:
1、不能不选
2、多条数据如果有未删除的,提示一下,删除成功几条,未成功几条,未成功是那几条
private void button2_Click(object sender, EventArgs e)
{
int DelCount = ; //要删除的总条数
int count = ; //已经删除的条数
string NotDelete = ""; if (listView1.CheckedItems.Count <= )
{
MessageBox.Show("请先选中您要删除的数据");
}
else
{
DelCount = listView1.CheckedItems.Count; foreach(ListViewItem li in listView1.CheckedItems)
{
if(li.Checked)
{
bool ok = new StudentData().delete(li.SubItems[].Text);
if (ok)
{
count += ;
}
else
{
NotDelete += li.SubItems[].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# .net winform)
最近在winform应用中需要用到可分组的数据列表功能,DataGridView默认没有提供分组的功能,而OutlookGrid(http://www.codeproject.com/KB/grid/ ...
- [转]C# Winform ListView使用
以下内容均来自网上,个人收集整理,具体出处也难确认了,就没写出处了: 一.基本使用: listView.View = View.Details;//设置视图 listView.SmallImageLi ...
- C# Winform ListView使用
以下内容均来自网上,个人收集整理,具体出处也难确认了,就没写出处了: 一.基本使用: listView.View = View.Details;//设置视图 listView.SmallImageLi ...
- 陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column
背景 最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~ 项目之前使用的是.net/winform.今天重新打开代码,看着之前在FrameWork2.0下面的代码, 满满的回忆 ...
- winform listview用法
资源收集 C#winform中ListView的使用 C# WinForm开发系列 - ListBox/ListView/Panel(介绍了一些listview的高级用法) 直接上代码 示例一: th ...
- WinForm ListView不分页加载大量数据
WinForm的ListView在加载大量数据时会出现闪烁的问题,同时数据加载很慢.如果你的列表中有超过千条的数据且不做特殊处理还是用普通的ListView.Items.Add(),估计你的用户得抱怨 ...
- Winform listview控件、 容器控件
1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格 ...
- winform listview控件、容器控件
ListVies控件主要用于展示数据 常用属性: FullRowSelect:设置是否行选择模式.(默认为false) (开启之后一下选中一行数据) GridLines:设置行和列之间是否显示网格线. ...
- C# winform窗体设计-数据库连接
本篇文章内容主要是小编上课所学的总结 最近小编在学习C#中的数据库管理方面,主要学习到数据库的增删改查,查询学生平均分,最低分,最高分等操作 [本篇文章中小编主要讲解数据库的连接] 在C#中使用数据库 ...
随机推荐
- C#壓縮文件幫助類 使用ICSharpCode.SharpZipLib.dll
using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZipLib.Zip; using System; using Syst ...
- fast-framework – 基于 JDK 8 实现的 Java Web MVC 框架
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! fast-framework 轻量级 Java Web 框架 – https://github. ...
- HDU 3791 二叉搜索树
二叉搜索树 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 发布大幅重构优化的 TouchVG 1.0.2
发布大幅重构优化的 TouchVG 1.0.2,支持SVG.多模块扩展结构,欢迎评阅改进.提交pull request. https://github.com/rhcad/touchvg 关于 Tou ...
- ArcGIS“一个或多个ActiveX控件无法显示...”问题的解决方案
ArcMap启动时的一个警告信息“一个或多个ActiveX控件无法显示...”,如图 出现这种情况,有可能的原因是IE浏览器的安全选项设置被修改了.比如被手动修改过,或者被第三方系统杀毒优化软件修改了 ...
- Fidder模拟Post请求
背景 最近想用fidder模拟post请求,怎么都传值失败,发现写Composer => Request Body中写的内容,总是无法映射到mvc的action参数上.百度一番,发现如下解决方案 ...
- DDD:群里关于验证的结论
@汤雪华 验证是为了让数据符合要求.各个层的验证是为了确保传递给各个层的数据符合当前层所需要的数据的要求. @小学僧 db model的验证主要是为了保证数据完整. domain model的验证主要 ...
- iOS-微信-分享
一.微信原生的分享--准备工作. 1. 需要申请微信AppId. 2. 导入系统架包. SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h,WechatAuthS ...
- Laravel 5 服务的注册和使用
首先我们需要创建一个服务的类,比如叫CqhServiceProvider,最简单的方式就是用artisan来帮我们创建 php artisan make:provider CqhServiceProv ...
- Android学习笔记之ExecutorService线程池的应用....
PS:转眼间就开学了...都不知道这个假期到底是怎么过去的.... 学习内容: ExecutorService线程池的应用... 1.如何创建线程池... 2.调用线程池的方法,获取线程执行完毕后的结 ...