回 帖 发 新 帖 刷新版面

主题: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,要怎么获得选中的索引呢?或是怎么修改本程序?

回复列表 (共2个回复)

沙发

使用SelectedItems属性

板凳

没功夫看代码

我来回复

您尚未登录,请登录后再回复。点此登录或注册