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; using DeiNiu.wms.Data.Model; public partial class DeptEmp : PageBase { private LEmployee _logic; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { _logic = new LEmployee(); Databound(); //分配角色时初始化部门人员树 } SessionSeting(); } /// /// bound the query list. /// private void Databound() { bindGV(); UpdateSession(); bindDept(); bindDeptEmp(); } /// /// 绑定部门 /// private void bindDept() { TreeDept.Nodes.Clear(); BindTree(TreeDept, "0", TreeDept.SelectedNode, _logic.GetDepartments().DefaultView); SetTreeDeptChecked(); } /// /// 绑定部门及用户 /// private void bindDeptEmp() { TreeDeptEmp.Nodes.Clear(); BindEmpTree(TreeDeptEmp, "0", TreeDeptEmp.SelectedNode, _logic.GetDepartments().DefaultView, _logic.GetActivedEmpDept().DefaultView); } public void BindEmpTree(TreeView tree, 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["ID"].ToString() + "_" + row["dep_name"] + "" ; 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["empId"].ToString()); node.ChildNodes.Add(tnEmp); } if (pNode == null) //说明是根节点 { tree.Nodes.Add(node); } else { pNode.ChildNodes.Add(node); } BindEmpTree(tree,node.Value, node, new DataView(deptdv.Table), new DataView(empdv.Table)); } } public void BindTree(TreeView tree, string id, TreeNode pNode, DataView deptdv ) { deptdv.RowFilter = "dep_mastdept = '" + id + "'"; foreach (DataRowView row in deptdv) { TreeNode node = new TreeNode(); node.Text = row["ID"].ToString() +"_" + row["dep_name"].ToString() + ""; node.Value = row["ID"].ToString(); node.SelectAction = TreeNodeSelectAction.None; // node.ShowCheckBox = Convert.ToInt16(row["dep_type"].ToString()) == 1; node.Expanded = true; if (pNode == null) //说明是根节点 { tree.Nodes.Add(node); } else { pNode.ChildNodes.Add(node); } BindTree(tree, node.Value, node, new DataView(deptdv.Table)); } } private void SessionSeting() { if (IsPostBack) { _logic = (LEmployee)Session[appScope.PagelevelObj]; } } private void UpdateSession() { Session[appScope.PagelevelObj] = _logic; } /************************************** protected methods (event listeners) ********************************/ protected void btnSubmit_Click(object sender, EventArgs e) { if (TreeDeptEmp.SelectedNode== null) return; ArrayList al = new ArrayList(); GetCheckedNode(TreeDept.Nodes, al); _logic.Initialize(); // using (TransactionScope trans = new TransactionScope()) { try { _logic.GetDeptEmp.Delete(Convert.ToInt32(TreeDeptEmp.SelectedValue)); foreach (string id in al) { _logic.GetDeptEmp.de_dept = Convert.ToInt32(id); _logic.GetDeptEmp.de_employee = Convert.ToInt32(TreeDeptEmp.SelectedValue); _logic.GetDeptEmp.Add(); } // trans.Complete(); } catch (MyException) { throw; } catch (Exception) { 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) { node.Checked = setcheckedvalues.Contains(Convert.ToInt32(node.Value)); SetCheckedNode(node.ChildNodes, setcheckedvalues); } } private void chgOperTxt(bool addNew) { btnSubmit.Enabled = true; } void SetTreeDeptChecked() { if( TreeDeptEmp.SelectedNode ==null) return; ArrayList deptList = new ArrayList(); DataTable dt = _logic.GetDepartments(Convert.ToInt32(TreeDeptEmp.SelectedValue)); foreach (DataRow dr in dt.Rows) { deptList.Add(dr["de_dept"]); } SetCheckedNode(TreeDept.Nodes, deptList); } protected void TreeDeptEmp_SelectedNodeChanged(object sender, EventArgs e) { GvDept.SelectedIndex = -1; SetTreeDeptChecked(); bindGV(); } void bindGV( ) { //人员部门清单 string nodevalue = TreeDeptEmp.SelectedValue; if (nodevalue.Length >0 && nodevalue != "0") //selected node is an employee { lbEmDept.Text = TreeDeptEmp.SelectedNode.Text + " 人员部门清单"; GvDept.DataSource = _logic.GetDepartments(Convert.ToInt32(nodevalue)); } GvDept.DataBind(); } protected void GvDept_RowUpdating(object sender, GridViewUpdateEventArgs e) { if (GvDept.DataKeys != null) { string id = GvDept.DataKeys[e.RowIndex].Value.ToString(); _logic.GetDeptEmp.ID = Convert.ToInt32(id); _logic.GetDeptEmp.getModel(); _logic.GetDeptEmp.de_title = ((TextBox)GvDept.Rows[e.RowIndex].Cells[3].Controls[1]).Text; //_logic.GetTrainingDetail.operater = _logic.GetDeptEmp.Update(); } GvDept.EditIndex = -1; GvDept.SelectedIndex = e.RowIndex; bindGV(); } protected void GvDept_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GvDept.EditIndex = -1; GvDept.SelectedIndex = e.RowIndex; bindGV(); } protected void GvDept_RowEditing(object sender, GridViewEditEventArgs e) { GvDept.EditIndex = e.NewEditIndex; GvDept.SelectedIndex = e.NewEditIndex; bindGV(); } }