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(); } /// /// bound the query list. /// private void Databound() { // bindAuth(); // bindRoles(); // if (!isRoleAuth) bindDeptEmp(); //分配角色时初始化部门人员树 bindGV(); UpdateSession(); } /// /// 绑定部门及用户 /// private void bindDeptEmp() { TreeDeptEmp.Nodes.Clear(); BindTree("0", TreeDeptEmp.SelectedNode, new LEmployee().GetDepartments().DefaultView, new LEmployee().GetActivedEmpDept().DefaultView); } /// ///绑定角色 /// 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 = "" + row["dep_name"] + "" +" "+ 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("" + emrow["em_name"] + "" , 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 ********************************************/ /// /// set data from page to shift object /// 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(); } }