一、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及数据库连接)的更多相关文章

  1. winform ListView应用之分组、重绘图标、网格线 (c# .net winform)

    最近在winform应用中需要用到可分组的数据列表功能,DataGridView默认没有提供分组的功能,而OutlookGrid(http://www.codeproject.com/KB/grid/ ...

  2. [转]C# Winform ListView使用

    以下内容均来自网上,个人收集整理,具体出处也难确认了,就没写出处了: 一.基本使用: listView.View = View.Details;//设置视图 listView.SmallImageLi ...

  3. C# Winform ListView使用

    以下内容均来自网上,个人收集整理,具体出处也难确认了,就没写出处了: 一.基本使用: listView.View = View.Details;//设置视图 listView.SmallImageLi ...

  4. 陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column

    背景 最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~ 项目之前使用的是.net/winform.今天重新打开代码,看着之前在FrameWork2.0下面的代码, 满满的回忆 ...

  5. winform listview用法

    资源收集 C#winform中ListView的使用 C# WinForm开发系列 - ListBox/ListView/Panel(介绍了一些listview的高级用法) 直接上代码 示例一: th ...

  6. WinForm ListView不分页加载大量数据

    WinForm的ListView在加载大量数据时会出现闪烁的问题,同时数据加载很慢.如果你的列表中有超过千条的数据且不做特殊处理还是用普通的ListView.Items.Add(),估计你的用户得抱怨 ...

  7. Winform listview控件、 容器控件

    1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格 ...

  8. winform listview控件、容器控件

    ListVies控件主要用于展示数据 常用属性: FullRowSelect:设置是否行选择模式.(默认为false) (开启之后一下选中一行数据) GridLines:设置行和列之间是否显示网格线. ...

  9. C# winform窗体设计-数据库连接

    本篇文章内容主要是小编上课所学的总结 最近小编在学习C#中的数据库管理方面,主要学习到数据库的增删改查,查询学生平均分,最低分,最高分等操作 [本篇文章中小编主要讲解数据库的连接] 在C#中使用数据库 ...

随机推荐

  1. Oracle的model语句入门-转

    Model语句是Oracle 10g的新功能之一. 本文通过一些简单的例子帮助理解Model语句的用法,复杂使用场景请参考其他文章. 环境:当然需要Oracle 10g以上,本人是在11g上测试的. ...

  2. iOS8设置应用图标红点的权限问题

    在ios8中,直接设置application badge value会出错 1 [[UIApplication sharedApplication] setApplicationIconBadgeNu ...

  3. POJ 2676 Sudoku

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12005   Accepted: 5984   Special ...

  4. Android 自定义Drawable

    1.使用BitmapShader实现图片圆角 public class CornerDrawable extends Drawable { private Paint mPaint; private ...

  5. WCF之常见异常整理(不断更新中...)

    系统Win7   IIS7.5 异常1.找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址.注册的基址方案是 [http]. 产生原因:网站没有配置net.tcp ...

  6. Frogger(floyd变形)

    Frogger Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  7. 【转】mysql如何跟踪执行的sql语句

    转自http://blog.csdn.net/testcs_dn/article/details/18791815 在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? ...

  8. Frame - 快速创建高品质的 Web 应用原型

    Frame 是一个让你够能够快速创建高品质的网站或应用程序产品原型的工具.你上传的图片将被包裹在真实的设备环境中.它是一个用于创建宣传资料的专业工具.Frame 完全免费供给商业和个人使用.他们也正探 ...

  9. WhatFontIs - 字体百科全书,没有不认识的字体

    我敢肯定,我不是唯一一个曾经特别想知道图片上使用的某个字体,然后特别无奈的到字体网站大海捞针似的的找类似的字体.如今,一个强大的软件字体识别——WhatFontIs,让我们的生活更轻松. 您可能感兴趣 ...

  10. Javascript面向对象之继承

    与类的创建篇一样,这里先贴出最终代码,再做详细分析: // 创建一个父类 function SuperType(){ this.company = 'alibaba'; } function SubT ...