/// <summary> /// 更改部门名称后就刷新到该部门的数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ddlProc_SelectedIndexChanged(object sender, EventArgs e) { //获取Session中保存的用户id Int16 userId = Int16.Parse(Session["user_id"].ToString()); //当前用户选择的部门id byte procId = Byte.Parse(ddlProc.SelectedValue); //通过选择的部门id以及当前用户id获取用户权限 using (var da = new v_user_proc_roleTableAdapter()) { //获取数据 var tab = da.GetDataByUserIdAndProcId(userId, procId); //检测有无数据 if (tab != null && tab.Rows.Count > 0) { //只取首行 var row = (DataSetUserProcRole.v_user_proc_roleRow)tab.Rows[0]; //清除之前保存的全部session Session.Clear(); //将用户名id写入Session Session["user_id"] = row.u_id; //将用户名写入Session Session["user_name"] = row.u_name; //将部门id写入Session Session["proc_id"] = row.proc_id; //将部门名称写入Session Session["proc_name"] = row.proc_name; //将角色id写入Session Session["role_id"] = row.ro_id; //更新最后一次部门名称 using (var da2 = new t_userTableAdapter()) { da2.UpdateLastProcByUserId(row.proc_name, row.u_id); } //刷新页面 StringBuilder sb = new StringBuilder(); sb.AppendLine("<script type=\"text/javascript\">"); sb.AppendLine("this.top.location.replace(this.top.location.href);"); sb.AppendLine("this.top.document.title=\"" + ddlProc.SelectedItem.Text + "部门管理系统\";"); sb.AppendLine("</script>"); Response.Write(sb.ToString()); } } }
/// <summary> /// 执行删除数据并处理相关数据一致性 /// </summary> /// <param name="e">传入的带有数据的事件参数</param> /// <returns></returns> private bool DeleteData(FormViewDeleteEventArgs e) { //当前用户输入的id号 Int64 id = Convert.ToInt64(e.Keys[0]); //数据适配器 //当前数据库连接 //当前更新语句对象 using (var da = new t_scrap_record_loseTableAdapter()) using (var cmd = da.Adapter.DeleteCommand) using (var conn = cmd.Connection) { //打开数据库连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction()) { //试运行 try { //设置事务 da.Transaction = tran; //获取数据 using (var tab = da.GetDataById(id)) { //检查是否获取到行 if (tab.Rows.Count == 0) { //显示失败 throw new Exception("当前遗失报废记录已经被其他用户删除,请刷新后重试!"); } else { //首行 var row = (DataSetLoseRecord.t_scrap_record_loseRow)tab.Rows[0]; //之前录入的用户名称 string userName = row.add_person; //检测当前用户所在部门名称和角色以及之前保存该记录的用户部门名称 //当前用户所在部门 string curUserProcName = Session["proc_name"].ToString(); //用户名称 string curUserName = Session["user_name"].ToString(); //当前角色id Int16 curUserRoleId = Convert.ToInt16(Session["role_id"]); //录入权限用户则必须和原录入用户一样的名字 if (curUserRoleId > 3) { //用户只能操作自己之前录入的 if (userName.ToUpper().Equals(curUserName.ToUpper())) { //显示失败 throw new Exception("当前遗失报废记录录入者并非是您,请找更高级权限的用户操作!"); } } //主管级别可以修改本部门的 else if (curUserRoleId == 3) { //检测之前录入用户所在部门 using (var daUser = new v_user_proc_roleTableAdapter()) { //设置事务 daUser.Transaction = tran; //检测该用户是否属于该部门 int i = Convert.ToInt32(daUser.CountByUserNameAndProcName(userName, curUserProcName)); if (i <= 0) { //显示失败 throw new Exception("当前遗失报废记录录入者并非是您当前部门用户,请找更高级权限的用户操作!"); } } } //样板经理级别只能修改样板批量卡,生产板经理只能修改生产板批量卡 else if (curUserRoleId == 2) { //之前录入的批量卡号 string lotId = row.lot_id; //检测是否样板 bool isSample = lotId.ToUpper().Contains("S"); //检查是否一致 if (!isSample && curUserProcName == "样板") { //显示失败 throw new Exception("当前遗失报废记录并非是样板,请找更高级权限的用户操作!"); } else if (isSample && curUserProcName == "PMC") { //显示失败 throw new Exception("当前遗失报废记录并非是生产板,请找更高级权限的用户操作!"); } } //部门名称 string procName = row.proc_name; //目标数据库表名 string toTabName = procName == "成品仓" ? "[t_complete_lot_card_wait]" : "[t_proc_lot_card_balance]"; //添加到部门结存批量卡 if (!ydOperateBalanceLotCrad.InsertOneRecordToLotCardBalance( tran, ydOperateBalanceLotCrad.GetTabNameByProcName("MRB2"), procName, toTabName, id, true )) { return false; } //从遗失报废记录删除数据 if (!ydOperateBalanceLotCrad.DeleteOneRecordFromProductOrScrapRecord(cmd, id)) { return false; } } } //提交事务 tran.Commit(); //返回成功 return true; } catch (Exception ex) { //回滚事务 tran.Rollback(); //非数字返回失败 throw new Exception(ex.Message); } } } }
protected void ddlProc_DataBound(object sender, EventArgs e) { //获取Session中保存的用户id Int16 userId = Int16.Parse(Session["user_id"].ToString()); //当前用户选择的部门id object obj = Session["proc_id"]; //通过选择的部门id以及当前用户id获取用户权限 using (var da = new v_user_proc_roleTableAdapter()) { //保存查询数据的表 DataSetUserProcRole.v_user_proc_roleDataTable tab; //检测部门id号 byte procId; if (obj != null && byte.TryParse(obj.ToString(), out procId) && procId != byte.MaxValue) { //获取数据 tab = da.GetDataByUserIdAndProcId(userId, procId); } else { //获取数据 tab = da.GetDataByUserId(userId); } //检测有无数据 if (tab != null && tab.Rows.Count > 0) { //只取首行 var row = (DataSetUserProcRole.v_user_proc_roleRow)tab.Rows[0]; //设置用户名和部门名称 ltlUser.Text = row.u_name; //清除之前保存的全部session Session.Clear(); //将用户名id写入Session Session["user_id"] = row.u_id; //将用户名写入Session Session["user_name"] = row.u_name; //将部门id写入Session Session["proc_id"] = row.proc_id; //将部门名称写入Session Session["proc_name"] = row.proc_name; //将角色id写入Session Session["role_id"] = row.ro_id; //取得是否部门名称 using (var da2 = new t_procTableAdapter()) { //获取全部部门清单 var tab2 = da2.GetDataByProductProcName(row.proc_name); //检测结果 if (tab2.Rows.Count <= 0) { //改变为部门 litProc.Text = "部门"; } } //显示到ddl控件中 for (int i = 0; i < ddlProc.Items.Count; i++) { //当前项 var itm = ddlProc.Items[i]; if (itm.Text == row.proc_name) { //设置当前项为选中项 if (ddlProc.SelectedIndex != i) { ddlProc.SelectedIndex = i; } //更新最后一次部门名称 using (var da2 = new t_userTableAdapter()) { da2.UpdateLastProcByUserId(row.proc_name, row.u_id); } //刷新页面 StringBuilder sb = new StringBuilder(); sb.AppendLine("<script type=\"text/javascript\">"); sb.AppendLine("this.top.document.title=\"" + ddlProc.SelectedItem.Text + litProc.Text + "管理系统\";"); sb.AppendLine("</script>"); Response.Write(sb.ToString()); //退出循环 break; } } } } }
protected void lvStateSettings_ItemUpdating(object sender, ListViewUpdateEventArgs e) { //取消请求执行自定义的方法 e.Cancel = true; //检测是否含有session if (Session.Count < 5) { //跳转 Response.Redirect("/Account/Login", true); //停止加载后续内容 Response.End(); //直接返回 return; } //当前用户所在部门 string procName = Session["proc_name"].ToString(); //当前角色id Int16 roleId = Convert.ToInt16(Session["role_id"]); //检测是否有权限 if ((procName != mustProcName && procName != "样板") || (roleId != 0 && roleId != 1 && roleId != 6)) { throw new Exception("您没有更新记录权限!"); } //当前记录行的数据的序号 int id = Convert.ToInt32(e.Keys[0]); //获取当前数据行 using (var da = new t_state_settingsTableAdapter()) using (var conn = da.Connection) { //打开数据库连接 conn.Open(); //当前数据库事务并获取当前行数据 using (var tran = da.Transaction) using (var tab = da.GetDataById(id)) { //获取当前行数据 if (tab.Rows.Count <= 0) { throw new Exception("当前行数据可能已经被其他用户删除!"); } //首行数据 var row = (DataSetStateSettings.t_state_settingsRow)tab.Rows[0]; //之前录入的用户名称 string userName = row.add_person; //检测当前用户所在部门名称和角色以及之前保存该记录的用户部门名称 //当前用户所在部门 string curUserProcName = Session["proc_name"].ToString(); //用户名称 string curUserName = Session["user_name"].ToString(); //当前角色id Int16 curUserRoleId = Convert.ToInt16(Session["role_id"]); //录入权限用户则必须和原录入用户一样的名字 if (curUserRoleId > 3) { //用户只能操作自己之前录入的 if (userName.ToUpper().Equals(curUserName.ToUpper())) { //显示失败 throw new Exception("当前遗失报废记录录入者并非是您,请找更高级权限的用户操作!"); } } //主管级别可以修改本部门的 else if (curUserRoleId >= 2) { //检测之前录入用户所在部门 using (var daUser = new v_user_proc_roleTableAdapter()) { //设置事务 daUser.Transaction = tran; //检测该用户是否属于该部门 int i = Convert.ToInt32(daUser.CountByUserNameAndProcName(userName, curUserProcName)); if (i <= 0) { //主管级别 if (curUserRoleId == 3) //显示失败 throw new Exception("当前遗失报废记录录入者并非是您当前部门用户,请找更高级权限的用户操作!"); } //经理级别可以修改不存在的用户录入的数据 else if (curUserRoleId == 2) { //检测该用户是否属于该部门 i = Convert.ToInt32(daUser.CountByUserName(userName)); if (i > 0) { //显示失败 throw new Exception("当前遗失报废记录录入者并非是您当前部门用户,请找更高级权限的用户操作!"); } } } } } } //设置录入员姓名和时间 e.NewValues["add_person"] = Session["user_name"].ToString(); e.NewValues["last_change_time"] = DateTime.Now; //允许执行删除数据 e.Cancel = false; }
protected void fvCustMgrAdd_ItemDeleting(object sender, FormViewDeleteEventArgs e) { //默认取消请求 e.Cancel = true; //检测是否含有session if (Session.Count < 5) { //跳转 Response.Redirect("/Account/Login", true); //停止加载后续内容 Response.End(); //直接返回 return; } //当前用户所在部门 string procName = Session["proc_name"].ToString(); //当前角色id Int16 roleId = Convert.ToInt16(Session["role_id"]); //检测是否有权限 if ((procName != mustProcName && procName != "样板") || (roleId != 0 && roleId != 1 && roleId != 6)) { throw new Exception("您没有删除记录权限!"); } //当前记录行的数据的客户序号 string custId = e.Keys[0].ToString(); //获取当前数据行 using (var da = new t_pmc_custTableAdapter()) using (var conn = da.Connection) { //打开数据库连接 conn.Open(); //当前数据库事务并获取当前行数据 using (var tran = da.Transaction) using (var tab = da.GetDataById(custId)) { //获取当前行数据 if (tab.Rows.Count <= 0) { throw new Exception("当前行数据可能已经被其他用户删除!"); } //首行数据 var row = (DataSetPmcCustMgr.t_pmc_custRow)tab.Rows[0]; //之前录入的用户名称 string userName = row.add_person; //检测当前用户所在部门名称和角色以及之前保存该记录的用户部门名称 //当前用户所在部门 string curUserProcName = Session["proc_name"].ToString(); //用户名称 string curUserName = Session["user_name"].ToString(); //当前角色id Int16 curUserRoleId = Convert.ToInt16(Session["role_id"]); //录入权限用户则必须和原录入用户一样的名字 if (curUserRoleId > 3) { //用户只能操作自己之前录入的 if (userName.ToUpper().Equals(curUserName.ToUpper())) { //显示失败 throw new Exception("当前遗失报废记录录入者并非是您,请找更高级权限的用户操作!"); } } //主管级别可以修改本部门的 else if (curUserRoleId >= 2) { //检测之前录入用户所在部门 using (var daUser = new v_user_proc_roleTableAdapter()) { //设置事务 daUser.Transaction = tran; //检测该用户是否属于该部门 int i = Convert.ToInt32(daUser.CountByUserNameAndProcName(userName, curUserProcName)); if (i <= 0) { //主管级别 if (curUserRoleId == 3) //显示失败 throw new Exception("当前遗失报废记录录入者并非是您当前部门用户,请找更高级权限的用户操作!"); } //经理级别可以修改不存在的用户录入的数据 else if (curUserRoleId == 2) { //检测该用户是否属于该部门 i = Convert.ToInt32(daUser.CountByUserName(userName)); if (i > 0) { //显示失败 throw new Exception("当前遗失报废记录录入者并非是您当前部门用户,请找更高级权限的用户操作!"); } } } } } } //允许请求 e.Cancel = false; }