284 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			284 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | ||
| using System.Collections;
 | ||
| using System.Data;
 | ||
| using System.Transactions;
 | ||
| using System.Web.UI;
 | ||
| using System.Web.UI.WebControls;
 | ||
| using DeiNiu.wms.Logical;
 | ||
| using DeiNiu.Utils;
 | ||
| 
 | ||
| public partial class RoleEmp : PageBase
 | ||
| {
 | ||
|     private LRoleAuthority _logic; 
 | ||
|     protected void Page_Load(object sender, EventArgs e)
 | ||
|     {
 | ||
|    
 | ||
|         if (!IsPostBack)
 | ||
|         {
 | ||
|             _logic = new LRoleAuthority();
 | ||
|             Databound();  
 | ||
|             bindRoles();
 | ||
|             bindDeptEmp();  //分配角色时初始化部门人员树
 | ||
|         }
 | ||
|         SessionSeting();
 | ||
| 
 | ||
|     }
 | ||
| 
 | ||
|     /// <summary>
 | ||
|     /// bound the query list.
 | ||
|     /// </summary>
 | ||
|     private void Databound()
 | ||
|     {
 | ||
|     //    bindAuth();
 | ||
|     //    bindRoles();
 | ||
|     //    if (!isRoleAuth) bindDeptEmp();  //分配角色时初始化部门人员树
 | ||
|         bindGV();
 | ||
|          UpdateSession();
 | ||
|  
 | ||
|         
 | ||
|     }
 | ||
|    
 | ||
|     
 | ||
| 
 | ||
| 
 | ||
|     /// <summary>
 | ||
|     /// 绑定部门及用户
 | ||
|     /// </summary>
 | ||
|     private void bindDeptEmp()
 | ||
|     {
 | ||
|         TreeDeptEmp.Nodes.Clear();
 | ||
|         BindTree("0", TreeDeptEmp.SelectedNode, new LEmployee().GetDepartments().DefaultView, new  LEmployee().GetActivedEmpDept().DefaultView);
 | ||
|          
 | ||
|          
 | ||
|     }
 | ||
| 
 | ||
|     /// <summary>
 | ||
|     ///绑定角色
 | ||
|     /// </summary>
 | ||
|     private void bindRoles()
 | ||
|     {
 | ||
|    
 | ||
|         listRoles.DataSource = _logic.GetAllRoles();
 | ||
|         listRoles.DataTextField = "role_name";
 | ||
|         listRoles.DataValueField = "ID";
 | ||
|         listRoles.DataBind();
 | ||
|     }
 | ||
|  
 | ||
|     public void BindTree(string id, TreeNode pNode, DataView deptdv,DataView empdv)
 | ||
|     {
 | ||
| 
 | ||
|         deptdv.RowFilter = "dep_mastdept = '" + id + "'";
 | ||
|         foreach (DataRowView row in deptdv)
 | ||
|         {
 | ||
|             TreeNode node = new TreeNode();
 | ||
|             node.Text = "<em>" + row["dep_name"] + "</em>" +" "+ row["ID"];
 | ||
|             node.Value = row["ID"].ToString();
 | ||
|              node.SelectAction = TreeNodeSelectAction.None;
 | ||
|             node.ShowCheckBox = false;
 | ||
|             node.Expanded = true;
 | ||
|             empdv.RowFilter = "de_dept=" + node.Value;
 | ||
|                 foreach (DataRowView emrow in empdv)
 | ||
|                 {
 | ||
|                     TreeNode tnEmp = new TreeNode("<Strong>" + emrow["em_name"] + "</Strong>"  ,
 | ||
|                         emrow["DE_EMPLOYEE"].ToString() + ";" + emrow["WAREHOUSE"].ToString()); 
 | ||
|                     node.ChildNodes.Add(tnEmp); 
 | ||
|                 }
 | ||
|             if (pNode == null)
 | ||
|                 //说明是根节点
 | ||
|             {
 | ||
|             
 | ||
|                 TreeDeptEmp.Nodes.Add(node);
 | ||
|                  
 | ||
|       
 | ||
|             }
 | ||
|             else
 | ||
|             { 
 | ||
|               
 | ||
|                 pNode.ChildNodes.Add(node); 
 | ||
|                
 | ||
|             }
 | ||
|             BindTree(node.Value, node, new DataView(deptdv.Table), new DataView(empdv.Table));
 | ||
| 
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|  
 | ||
|     private void SessionSeting()
 | ||
|     {
 | ||
|         if (IsPostBack)
 | ||
|         {
 | ||
|             _logic = (LRoleAuthority)Session[appScope.PagelevelObj];
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     private void UpdateSession()
 | ||
|     {
 | ||
|         Session[appScope.PagelevelObj] = _logic;
 | ||
|     }
 | ||
| 
 | ||
|     
 | ||
|     /************************************** protected methods (event listeners) ********************************/
 | ||
| 
 | ||
| 
 | ||
|     protected void btnSubmit_Click(object sender, EventArgs e)
 | ||
|     {
 | ||
|         lbmsg.Text = " ";
 | ||
|         if (listRoles.SelectedValue == string.Empty) return;
 | ||
|         ArrayList al = new ArrayList();
 | ||
| 
 | ||
|         GetCheckedNode(TreeDeptEmp.Nodes, al);
 | ||
|         _logic.Initialize();
 | ||
| 
 | ||
|         try
 | ||
|         {
 | ||
|             using (TransactionScope trans = new TransactionScope())
 | ||
|             {
 | ||
|                 int roleId = Convert.ToInt32(listRoles.SelectedValue);
 | ||
|                 _logic.GetRoleEmp.Delete(roleId);
 | ||
| 
 | ||
|                 foreach (string id in al)
 | ||
|                 {
 | ||
|                     string[] ls= id.Split(';');
 | ||
|                     _logic.GetRoleEmp.re_role = roleId;
 | ||
|                     _logic.GetRoleEmp.re_employee =  Convert.ToInt32(ls[0]) ; 
 | ||
|                     if (ls.Length > 1)
 | ||
|                     {
 | ||
|                         _logic.GetRoleEmp.warehouse = Convert.ToInt32(ls[1]);
 | ||
|                     }
 | ||
|                     _logic.GetRoleEmp.Add();
 | ||
|                 }
 | ||
| 
 | ||
|                 trans.Complete();
 | ||
|             }
 | ||
|             lbmsg.Text = "保存成功";
 | ||
|         }
 | ||
|         catch (MyException)
 | ||
|         {
 | ||
|             throw;
 | ||
|         }
 | ||
|         catch (Exception er)
 | ||
|         {
 | ||
|             throw new Exception("出现异常,保存失败。");
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         Databound();
 | ||
|     }
 | ||
| 
 | ||
|    
 | ||
|     //reset the page
 | ||
|     protected void btnCancel_Click(object sender, EventArgs e)
 | ||
|     {
 | ||
|         _logic.Initialize();
 | ||
|         Page_Load(this, e);
 | ||
|        
 | ||
|     }
 | ||
| 
 | ||
|     /***************************************** internal methods ********************************************/
 | ||
| 
 | ||
|     /// <summary>
 | ||
|     /// set data from page to shift object
 | ||
|     /// </summary>
 | ||
|     private void SetDataBack()
 | ||
|     {
 | ||
| 
 | ||
| 
 | ||
|     }
 | ||
| 
 | ||
|  void GetCheckedNode(TreeNodeCollection tnc, ArrayList checkedvalues )
 | ||
|  {
 | ||
|         foreach(TreeNode node in tnc)
 | ||
|         {
 | ||
|             if(node.Checked)
 | ||
|     {
 | ||
|         checkedvalues.Add(node.Value);
 | ||
|                  
 | ||
|             }
 | ||
|             GetCheckedNode(node.ChildNodes, checkedvalues);
 | ||
|        }
 | ||
| }
 | ||
| 
 | ||
|     void SetCheckedNode(TreeNodeCollection tnc, ArrayList setcheckedvalues)
 | ||
|     {
 | ||
|         foreach (TreeNode node in tnc)
 | ||
|         {
 | ||
|             string[] ls = node.Value.Split(';');
 | ||
|             node.Checked = setcheckedvalues.Contains(Convert.ToInt32(ls[0])); 
 | ||
|              
 | ||
|             SetCheckedNode(node.ChildNodes, setcheckedvalues);
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
|     private void chgOperTxt(bool addNew)
 | ||
|     {
 | ||
|  
 | ||
|         btnSubmit.Enabled = true;
 | ||
|         
 | ||
|     }
 | ||
| 
 | ||
|     
 | ||
| 
 | ||
| 
 | ||
|     protected void listRoles_SelectedIndexChanged(object sender, EventArgs e)
 | ||
|     {
 | ||
|        
 | ||
|       
 | ||
|         //--重置人员树的选择
 | ||
|        /*
 | ||
|         if (TreeDeptEmp.SelectedNode != null) TreeDeptEmp.SelectedNode.Selected = false;
 | ||
|          
 | ||
|         lbAuthRole.Text = "人员角色清单";
 | ||
|         GvRole.DataSource = null;
 | ||
|         GvRole.DataBind();
 | ||
|         * */
 | ||
|         //--选择人员树复选框 
 | ||
|         
 | ||
|             ArrayList empList = new ArrayList(); 
 | ||
|             DataTable  dt =_logic.GetEmListByRole(Convert.ToInt32(listRoles.SelectedValue))  ;
 | ||
|             foreach (DataRow dr in dt.Rows) 
 | ||
|             {
 | ||
|                 empList.Add(dr["ID"]);
 | ||
|             }
 | ||
|         SetCheckedNode(TreeDeptEmp.Nodes, empList);
 | ||
| 
 | ||
|         bindGV();
 | ||
| 
 | ||
|     }
 | ||
|     protected void TreeDeptEmp_SelectedNodeChanged(object sender, EventArgs e)
 | ||
|     {
 | ||
| 
 | ||
|         bindGV();
 | ||
|        
 | ||
|     }
 | ||
|      
 | ||
|    
 | ||
|     void bindGV( )
 | ||
|     {
 | ||
|         //人员角色,权限清单
 | ||
|         string nodevalue = TreeDeptEmp.SelectedValue;
 | ||
|         nodevalue = nodevalue.Split(';')[0];
 | ||
|         if (nodevalue.Length >0 && nodevalue  != "0")  //selected node is an employee
 | ||
|         {
 | ||
| 
 | ||
|             lbEmRole.Text = TreeDeptEmp.SelectedNode.Text;// +" 人员角色清单";
 | ||
|           GvRole.DataSource = _logic.GetRoleByEm(Convert.ToInt32(nodevalue));
 | ||
| 
 | ||
|           lbEmAuth.Text = TreeDeptEmp.SelectedNode.Text;// +" 人员权限清单";
 | ||
|          GVauth.DataSource = _logic.GetAuthByEm(Convert.ToInt32(nodevalue));
 | ||
|         
 | ||
|         }
 | ||
|         GvRole.DataBind();
 | ||
|         GVauth.DataBind();
 | ||
| 
 | ||
|         //角色对应的人员清单
 | ||
|         if (listRoles.SelectedItem != null)
 | ||
|         {
 | ||
| 
 | ||
|             lbRoleEm.Text = listRoles.SelectedItem.Text;// +" 角色人员清单";
 | ||
|             GvEm.DataSource = _logic.GetEmListByRole(Convert.ToInt32(listRoles.SelectedValue));
 | ||
|         }
 | ||
|         GvEm.DataBind();
 | ||
|     }
 | ||
|  
 | ||
| } |