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("添加失败!");
              }
            }
        }
}

添加代码部分

时间: 2024-10-15 08:56:58

winform(ListView及数据库连接)的相关文章

WinForm LIstView

ListView控件是一个winform自带的表格型的应用数据展示控件 好处:是功能比较完善,不需要再自己设置 缺点:不好的地方就是不能设置控件中单元格的大小,字体变大之后超出部分就会隐藏 要将表中的数据展示出来,需要做到以下几步: 1.先设置好ListView的列名,确定好要展示的的数据有几列 (1)如何设置列名: 点击行为属性Columns,可以设置要设置的列名(text),可以设置很多属性,基本和其他控件一致 2.查询要展示的表的内容,把这个写成一个方法,方便别的Form调用,   3.将

WinForm ListView控件属性及用法

知识点补充: Form2 f2 =new Form2(); f2.Owner=this: f2.shoW(); 用法:记事本中使用替换.查找功能时,弹出的窗体总是在记事本窗体之上,且能修改记事本的内容.不能设置为TopMost,因为不能遮盖打开的其他窗体 ListView  列表展示数据 视图:DeTails 设置列头:编辑列,点击添加每一列的列头 添加行数据:编辑项,先添加一行数据:再点击SubItems,插入行数据 也可在属性中进行设置.视图:属性的最下边:行为里面,列:columns(集合

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

最近在winform应用中需要用到可分组的数据列表功能,DataGridView默认没有提供分组的功能,而OutlookGrid(http://www.codeproject.com/KB/grid/OutlookGrid.aspx)用起来又是相当的麻烦,最后发现了ObjectListView(objectlistview.sourceforge.net),功能相当的强大,强大到我不需要那么多的功能,额~~所以决定参照它的实现,对ListView做一个简单的扩展(注:本文仅针对ListView的

Winform listview控件、 容器控件

1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格线.(默认为false)提示:只有在Details视图该属性才有意义. (3)AllowColumnReorder:设置是否可拖动列标头来对改变列的顺序.(默认为false)提示:只有在Details视图该属性才有意义. (4)View:获取或设置项在控件中的显示方式,包括Details.Large

WinForm ListView虚拟模式加载数据 提高加载速度

将VirtualMode 属性设置为 true 会将 ListView 置于虚拟模式.控件不再使用Collection.Add()这种方式来添加数据,取而代之的是使用RetrieveVirtualItem(Occurs when the ListView is in virtual mode and requires a ListViewItem.)和CacheVirtualItems两个事件,单独使用RetrieveVirtualItem也可以,CacheVirtualItems这个事件主要是

WinForm ListView控件

namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //设置该listview关联的imagelist listView1.LargeImageList = imageList2; listView1.SmallI

C# winform ListView+CheckBox的做法

1.设置ListView的属性:CheckBoxs=true 2.ListView字段第一列文本框为空,把工具箱里面的CheckBox控件拖到ListView的第一个字段做全选/全不选的控件. 3.CheckBox控件的全选/全不选代码如下: //全选或者全不选 private void chkAll_CheckedChanged(object sender, EventArgs e) { foreach (ListViewItem item in lv.Items) { //item.Sele

C# WINFORM ListView用法详解(转)

一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格线.(默认为false)提示:只有在Details视图该属性才有意义. (3)AllowColumnReorder:设置是否可拖动列标头来对改变列的顺序.(默认为false)提示:只有在Details视图该属性才有意义. (4)View:获取或设置项在控件中的显示方式,包括D

winform listview控件、容器控件

一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2)GridLines:设置行和列之间是否显示网格线.(默认为false)提示:只有在Details视图该属性才有意义. (3)AllowColumnReorder:设置是否可拖动列标头来对改变列的顺序.(默认为false)提示:只有在Details视图该属性才有意义. (4)View:获取或设置项在控件中的显示方式,包括De