主题:ListView 控件的问题
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MySchool考试管理系统
{
public partial class SearchStudent : Form
{
public SearchStudent()
{
InitializeComponent();
}
private void btnSearch_Click(object sender, EventArgs e)
{
if (txtLogintId.Text == "")
{
MessageBox.Show("请输入用户名", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtLogintId.Focus();
}
else
{
FillListView();
}
}
//根据条件,从数据库中读取数据并填充列表视图
private void FillListView()
{
string str = string.Format("select studentid,loginid,studentno,studentname,userstateid from student where loginid like '%{0}%'", txtLogintId.Text);//查询SQL语句
SqlCommand command = new SqlCommand(str, DataBaseConnection.connection);
DataBaseConnection.connection.Open();//打开数据库
SqlDataReader reader = command.ExecuteReader();//创建reader对象
try
{
lvStudent.Items.Clear();//清楚ListView中的所有项
if (reader.HasRows)//查询到数据行
{
while (reader.Read())
{
//将读取到的数据赋给相应的变量
string loginid = reader["LoginId"].ToString();
string studentname = reader["StudentName"].ToString();
string studentno = reader["studentNo"].ToString();
string userstateid = Convert.ToInt16(reader["UserStateId"].ToString()) == 1 ? "活动" : "非活动";
ListViewItem lvistudent = new ListViewItem(loginid);//创建一个ListView项
lvistudent.Tag = Convert.ToInt16( reader["StudentId"]);//将ID放在Tag 中
lvStudent.Items.Add(lvistudent);//向ListView中添加一个新项
lvistudent.SubItems.AddRange(new string []{studentname,studentno,userstateid});//向当前项中添加子项
}
}
else//结果中没有数据行
{
MessageBox.Show("抱歉,没有您要找的用户!","结果提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
reader.Close();//关闭reader对象
DataBaseConnection.connection.Close();//关闭数据库
}
}
//将用户状态改为活动
private void tsmiActive_Click(object sender, EventArgs e)
{
//确保用户选择了一个学员才能执行修改操作
if (lvStudent.SelectedItems.Count == 0)
{
MessageBox.Show("您没有选择任何用户", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
string str = string.Format("update student set userstateid=1 where studentid={0}",this.lvStudent.Items[0].Tag);
int result = 0;//操作结果标识
try
{
SqlCommand command = new SqlCommand(str, DataBaseConnection.connection);
DataBaseConnection.connection.Open();//打开数据库
result = command.ExecuteNonQuery();//执行命令
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DataBaseConnection.connection.Close();//关闭数据库
}
if (result < 1)//操作失败
{
MessageBox.Show("修改失败!", "操作结果", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
else//操作成功
{
MessageBox.Show("操作成功","操作结果",MessageBoxButtons.OK,MessageBoxIcon.Information);
FillListView();//调用方法重新查询重填,刷新信息
}
}
}
//将用户状态改为非活动
private void tsmiInactive_Click(object sender, EventArgs e)
{
//确保用户选择了一个学员才能执行修改操作
if (lvStudent.SelectedItems.Count == 0)
{
MessageBox.Show("您没有选择任何用户", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
string str = string.Format("update student set userstateid=0 where studentid={0}",this.lvStudent.Items[0].Tag);
int result = 0;//操作结果标识
try
{
SqlCommand command = new SqlCommand(str, DataBaseConnection.connection);
DataBaseConnection.connection.Open();//打开数据库
result = command.ExecuteNonQuery();//执行命令
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DataBaseConnection.connection.Close();//关闭数据库
}
if (result < 1)//操作失败
{
MessageBox.Show("修改失败!", "操作结果", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
else//操作成功
{
MessageBox.Show("操作成功", "操作结果", MessageBoxButtons.OK, MessageBoxIcon.Information);
FillListView();//调用方法重新查询重填,刷新信息
}
}
}
}
}
为什么修改用户状态时,只能修改第一项的 是不是LvStudent.Items[0].Tag这里的索引是0,要怎么获得选中的索引呢?或是怎么修改本程序?
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MySchool考试管理系统
{
public partial class SearchStudent : Form
{
public SearchStudent()
{
InitializeComponent();
}
private void btnSearch_Click(object sender, EventArgs e)
{
if (txtLogintId.Text == "")
{
MessageBox.Show("请输入用户名", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtLogintId.Focus();
}
else
{
FillListView();
}
}
//根据条件,从数据库中读取数据并填充列表视图
private void FillListView()
{
string str = string.Format("select studentid,loginid,studentno,studentname,userstateid from student where loginid like '%{0}%'", txtLogintId.Text);//查询SQL语句
SqlCommand command = new SqlCommand(str, DataBaseConnection.connection);
DataBaseConnection.connection.Open();//打开数据库
SqlDataReader reader = command.ExecuteReader();//创建reader对象
try
{
lvStudent.Items.Clear();//清楚ListView中的所有项
if (reader.HasRows)//查询到数据行
{
while (reader.Read())
{
//将读取到的数据赋给相应的变量
string loginid = reader["LoginId"].ToString();
string studentname = reader["StudentName"].ToString();
string studentno = reader["studentNo"].ToString();
string userstateid = Convert.ToInt16(reader["UserStateId"].ToString()) == 1 ? "活动" : "非活动";
ListViewItem lvistudent = new ListViewItem(loginid);//创建一个ListView项
lvistudent.Tag = Convert.ToInt16( reader["StudentId"]);//将ID放在Tag 中
lvStudent.Items.Add(lvistudent);//向ListView中添加一个新项
lvistudent.SubItems.AddRange(new string []{studentname,studentno,userstateid});//向当前项中添加子项
}
}
else//结果中没有数据行
{
MessageBox.Show("抱歉,没有您要找的用户!","结果提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
reader.Close();//关闭reader对象
DataBaseConnection.connection.Close();//关闭数据库
}
}
//将用户状态改为活动
private void tsmiActive_Click(object sender, EventArgs e)
{
//确保用户选择了一个学员才能执行修改操作
if (lvStudent.SelectedItems.Count == 0)
{
MessageBox.Show("您没有选择任何用户", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
string str = string.Format("update student set userstateid=1 where studentid={0}",this.lvStudent.Items[0].Tag);
int result = 0;//操作结果标识
try
{
SqlCommand command = new SqlCommand(str, DataBaseConnection.connection);
DataBaseConnection.connection.Open();//打开数据库
result = command.ExecuteNonQuery();//执行命令
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DataBaseConnection.connection.Close();//关闭数据库
}
if (result < 1)//操作失败
{
MessageBox.Show("修改失败!", "操作结果", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
else//操作成功
{
MessageBox.Show("操作成功","操作结果",MessageBoxButtons.OK,MessageBoxIcon.Information);
FillListView();//调用方法重新查询重填,刷新信息
}
}
}
//将用户状态改为非活动
private void tsmiInactive_Click(object sender, EventArgs e)
{
//确保用户选择了一个学员才能执行修改操作
if (lvStudent.SelectedItems.Count == 0)
{
MessageBox.Show("您没有选择任何用户", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
string str = string.Format("update student set userstateid=0 where studentid={0}",this.lvStudent.Items[0].Tag);
int result = 0;//操作结果标识
try
{
SqlCommand command = new SqlCommand(str, DataBaseConnection.connection);
DataBaseConnection.connection.Open();//打开数据库
result = command.ExecuteNonQuery();//执行命令
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DataBaseConnection.connection.Close();//关闭数据库
}
if (result < 1)//操作失败
{
MessageBox.Show("修改失败!", "操作结果", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
else//操作成功
{
MessageBox.Show("操作成功", "操作结果", MessageBoxButtons.OK, MessageBoxIcon.Information);
FillListView();//调用方法重新查询重填,刷新信息
}
}
}
}
}
为什么修改用户状态时,只能修改第一项的 是不是LvStudent.Items[0].Tag这里的索引是0,要怎么获得选中的索引呢?或是怎么修改本程序?