/// <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(); } } }
/// <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); } }