/// <summary>
        /// 数据网格选中项变更事件回调函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgrdStuffInfo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //获取数据网格当前选中行的行号
            int selectedIndex = dgrdStuffInfo.SelectedIndex;

            //判断选中行的行号,避免切换绑定资源时引发的异常
            if (selectedIndex > -1)
            {
                //取得数据网格当前的物资对象表
                Stuff stuff = dgrdStuffInfo.SelectedItem as Stuff;

                //如果物资处于可借状态——即: 1.用户处于所有物资界面;
                //2.该物资当前被拥有者持有; 3.该物资的拥有者不是当前用户。
                if ((bool)rdbAllStuffs.IsChecked && stuff.State.Equals("Holding") && !stuff.Owner.Equals(user.UserName))
                {
                    //按用户名获取缓存中的当前物资拥有者用户对象
                    User owner = App.GetUserByUserName(stuff.Owner);

                    //如果借入窗口尚未实例化
                    if (null == borrowWindow)
                    {
                        //创建并初始化借入窗口对象
                        borrowWindow = new BorrowWindow(this, stuff, owner, user);
                    }

                    //显示借入窗口
                    borrowWindow.Show();
                }

                //如果物资处于可还状态——即: 1.用户处于借入物资界面;
                //2.该物资当前被借出; 3.该物资的当前持有者是当前用户。
                else if ((bool)rdbBorrowedStuffs.IsChecked && stuff.State.Equals("LentOut") && stuff.CurrentHolder.Equals(user.UserName))
                {
                    //按用户名获取缓存中的当前物资拥有者用户对象
                    User owner = App.GetUserByUserName(stuff.Owner);

                    //如果归还窗口尚未实例化
                    if (null == returnWindow)
                    {
                        //创建并初始化归还物口对象
                        returnWindow = new ReturnWindow(this, stuff, owner, user);
                    }

                    //显示归还窗口
                    returnWindow.Show();
                }

                //如果物资处于可删除状态——即: 1.用户处于我的物资界面;
                //2.该物资的拥有者不是当前用户。
                else if ((bool)rdbMyStuffs.IsChecked && stuff.Owner.Equals(user.UserName))
                {
                    //如果该物资当前被借出
                    if (!stuff.State.Equals("Holding"))
                    {
                        MessageBox.Show("该物资当前处于借出状态,请先执行归还流程。", "删除失败", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                        return;
                    }

                    //按实验室号获取缓存中的主管老师用户对象
                    User headTeacher = App.GetTeacherByLaboratory(user.Laboratory);

                    //如果未查询到该实验室的主管老师
                    if (null == headTeacher)
                    {
                        MessageBox.Show("未查询到主管老师的相关信息,请通知该主管老师注册本系统或联系系统管理员。", "错误的用户信息", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                        return;
                    }

                    //如果删除物资窗口尚未实例化
                    if (null == removeStuffWindow)
                    {
                        //创建并初始化删除物资窗口
                        removeStuffWindow = new RemoveStuffWindow(this, stuff, headTeacher, user);
                    }

                    //显示删除物资窗口
                    removeStuffWindow.Show();
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 按当前持有者查询物资
        /// </summary>
        /// <param name="CurrentHolder">当前持有者用户名</param>
        /// <returns>查询结果列表</returns>
        public static List <Stuff> QueryStuffByCurrentHolder(string CurrentHolder)
        {
            //创建并初始化MySql数据库连接
            MySqlConnection connection = null;

            //创建并初始化MySql数据库命令
            MySqlCommand command = null;

            //创建并初始化MySql数据阅读器
            MySqlDataReader reader = null;

            //创建查询结果列表
            List <Stuff> stuffs = new List <Stuff>();

            try
            {
                //获取数据库连接对象
                connection = DBManager.GetConnection();

                //构造SQL表达式
                StringBuilder sqlExpression = new StringBuilder();
                sqlExpression.Append("SELECT * FROM stuff WHERE ");
                sqlExpression.Append("CurrentHolder=@CurrentHolder AND Owner<>@Owner");

                //ADO.NET安全赋值
                command = new MySqlCommand(sqlExpression.ToString(), connection); command.Parameters.AddWithValue("@CurrentHolder", CurrentHolder);
                command.Parameters.AddWithValue("@Owner", CurrentHolder);

                //执行数据库命令并接收查询结果
                reader = command.ExecuteReader();

                //若未读取完所有的查询结果条目
                while (reader.Read())
                {
                    //构造一个对应于当前条目的物资对象
                    Stuff stuff = new Stuff()
                    {
                        StuffId           = reader.GetInt32("StuffId"),
                        StuffName         = reader.GetString("StuffName"),
                        ValueOfAssessment = reader.GetInt32("ValueOfAssessment"),
                        State             = reader.GetString("State"),
                        Owner             = reader.GetString("Owner"),
                        CurrentHolder     = reader.GetString("CurrentHolder")
                    };

                    //向结果列表中添加物资对象
                    stuffs.Add(stuff);
                }

                //返回结果列表
                return(stuffs);
            }
            catch (Exception)
            {
                //出错返回空的结果列表,不是null但stuffs.Count等于0
                return(stuffs);
            }
            finally
            {
                //关闭与数据库相关的所有对象
                DBManager.CloseAll(reader, command, connection);
            }
        }