0925 ListView
ListView
说白了就是将数据库以表格的形式展示在窗体中
1、视图 -点击右上角小箭头可以快速建表
2、设置列头 - Columns属性点击添加的都是列名
3、添加行数据 -添加完列之后有个Items属性添加行数据
-----------------------------------------------------------
1、窗体加载后自动绑定显示ListView中的数据
办法:
数据绑定代码写在窗体的构造函数中
//绑定一个函数,显示数据
public void DBind()
{
listView1.Items.Clear();
int a=1;
List<Student> list1=new List<Student>();
StudentData st1=new StudentData();
list1 = st1.Select();
foreach(Student st in list1)
{
ListViewItem li = new ListViewItem();
li.Text = a.ToString();
li.SubItems.Add(st.Code.ToString());
li.SubItems.Add(st.Name);
li.SubItems.Add(st.sex.ToString());
li.SubItems.Add(st.birthday.ToString());
li.SubItems.Add(st.subjectcode);
listView1.Items.Add(li);
a++;
}
}
//每次启动就可以刷新数据了
public Form1()
{
InitializeComponent();
DBind();
}
2、给用户展示最终数据
属性扩展
在封装对象的时候就需要写了,以前写过不再啰嗦
3、行号
用C#变量循环++来实现
int a=1;
li.Text = a.ToString();
这是上面那个函数的两句代码,就是为了实现序号的
4、数据重复绑定
在绑定之前清空Items集合
listView1.Items.Clear();
5、选中一行数据
外观 - FullRowSelect:选择其中一项是否选中整行
CheckBoxes:复选框
GridLines:网格线
行为 - HideSelection :当控件没有焦点时,是否移除选定项的突出显示
HeaderStyle:列表头的样式
HoverSelection :鼠标悬浮在项上选择项,不好用,需停顿一会,通常与CheckBoxes连用
2、如何将选中的数据取出来
一个是FullRowSelect属性为True可以选择整行数据
ListView1.SelectedItems
另一个是CheckBoxes属性为True时,可以按照复选框来选择整行数据
ListView1.CheckedItems
---------------------------------------------------------------------
删除
只能删除一条:
private void button3_Click(object sender, EventArgs e)
{
int delcount = 0;
int shengyucount = 0;
string a = "";
StudentData std = new StudentData();
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)
{
shengyucount++;
}
else { a += li.SubItems[1].Text + ","; }
}
}
DBind();
if (delcount == shengyucount)
{
MessageBox.Show("删除成功");
}
else
{
MessageBox.Show("删除失败!要删除" + delcount + "条数据,未删除" + (delcount - shengyucount) + "条数据,未删除的用户名未:" + a + "");
}
}
}
增加:
学号不能为空,不能重复,名字不能为空
private void button1_Click(object sender, EventArgs e)
{
Student st = new Student();
StudentData sdt = new StudentData();
if (textBox1.Text == "")
{
xuehao.Text = "学号不能为空!";
}
else
{
if (sdt.Select(textBox1.Text.Trim()))
{
xuehao.Text = "学号已存在!";
}
else
{
st.Code = textBox1.Text;
}
}
if (textBox2.Text != "")
{
st.Name = textBox2.Text;
}
else
{
xingming.Text = "姓名不能为空!";
}
if (radioButton1.Checked)
{
st.Sex = true;
}
else
{
st.Sex = false;
}
st.Birthday = dateTimePicker1.Value;
st.SubjectCode = comboBox1.SelectedValue.ToString();
bool b=sdt.Insert(st);
if (b == true)
{
MessageBox.Show("添加成功!");
this.Close();
}
else
{
MessageBox.Show("添加失败!");
}
F1.DBind();
}
修改:
学号不能修改,名字不能为空
private void Form3_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Student st = new Student();
StudentData sdt = new StudentData();
st.Code = label3.Text;
if (textBox1.Text != "")
{
st.Name = textBox1.Text;
}
else
{
label8.Text = "姓名不能为空!";
}
if (radioButton1.Checked)
{
st.Sex = true;
}
else
{
st.Sex = false;
}
st.Birthday = dateTimePicker1.Value;
st.SubjectCode = comboBox1.SelectedValue.ToString();
bool b = sdt.Update(st);
if (b == true)
{
MessageBox.Show("修改成功!");
this.Close();
}
else
{
MessageBox.Show("修改失败!");
}
F1.DBind();
}