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 LessonEmp : PageBase { private LlessonEmp _logic; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { _logic = new LlessonEmp(); Databound(); bindLessons(); bindDeptEmp(); //分配角色时初始化部门人员树 } SessionSeting(); } /// /// bound the query list. /// private void Databound() { // bindAuth(); // bindRoles(); // if (!isRoleAuth) bindDeptEmp(); //分配角色时初始化部门人员树 bindGV(); UpdateSession(); } /// /// 绑定部门及用户 /// private void bindDeptEmp() { TreeEmp.Nodes.Clear(); BindEmpTree( "0", TreeEmp.SelectedNode, _logic.GetAllDepartments().DefaultView, _logic.GetAllEmployee().DefaultView); } /// ///绑定角色 /// private void bindLessons() { BindLessonTree("0",TreeLesson.SelectedNode,_logic.GetAllCategories().DefaultView,_logic.GetAllActiveData().Tables[0].DefaultView ); } public void BindLessonTree(string id, TreeNode pNode, DataView deptdv, DataView empdv) { deptdv.RowFilter = "lc_uplevel = '" + id + "'"; foreach (DataRowView row in deptdv) { TreeNode node = new TreeNode(); node.Text = "" + row["lc_name"] + "" + row["ID"]; node.Value = row["ID"].ToString(); node.SelectAction = TreeNodeSelectAction.None; node.Expanded = true; empdv.RowFilter = "le_category=" + node.Value; foreach (DataRowView emrow in empdv) { TreeNode tnEmp = new TreeNode("" + emrow["le_name"] + "", emrow["ID"].ToString()); node.ChildNodes.Add(tnEmp); } if (pNode == null) //说明是根节点 { TreeLesson.Nodes.Add(node); } else { pNode.ChildNodes.Add(node); } BindLessonTree(node.Value, node, new DataView(deptdv.Table), new DataView(empdv.Table)); } } public void BindEmpTree(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 = "em_dept=" + node.Value; foreach (DataRowView emrow in empdv) { TreeNode tnEmp = new TreeNode("" + emrow["em_name"] + "" , emrow["ID"].ToString()); tnEmp.ShowCheckBox = true; node.ChildNodes.Add(tnEmp); } if (pNode == null) //说明是根节点 { TreeEmp.Nodes.Add(node); } else { pNode.ChildNodes.Add(node); } BindEmpTree(node.Value, node, new DataView(deptdv.Table), new DataView(empdv.Table)); } } private void SessionSeting() { if (IsPostBack) { _logic = (LlessonEmp)Session[appScope.PagelevelObj]; } } private void UpdateSession() { Session[appScope.PagelevelObj] = _logic; } /************************************** protected methods (event listeners) ********************************/ protected void btnSubmit_Click(object sender, EventArgs e) { if (TreeLesson.SelectedValue == string.Empty) return; ArrayList al = new ArrayList(); ArrayList al2del = new ArrayList(); GetCheckedNode(TreeEmp.Nodes, al); string tmpid; DataTable dt = _logic.GetEmpByLesson(Convert.ToInt32(TreeLesson.SelectedValue)); for (int i = 0; i < dt.Rows.Count;i++ ) { tmpid = dt.Rows[i]["train_student"].ToString().Trim(); if (al.Contains(tmpid )) { al.Remove(tmpid); } else { al2del.Add(tmpid); } } if(al.Count >0 || al2del.Count >0) { _logic.Initialize(); // using (TransactionScope trans = new TransactionScope()) { try { // _logic.GetLesson.Delete(Convert.ToInt32(TreeLesson.SelectedValue)); foreach (string id in al2del) { _logic.GetTrainingDetail.ID = Convert.ToInt32(id); _logic.GetTrainingDetail.getModel(); _logic.GetTrainingDetail.Delete(); } foreach (string id in al) { _logic.GetTrainingDetail.train_lesson = Convert.ToInt32(TreeLesson.SelectedValue); _logic.GetTrainingDetail.train_student = Convert.ToInt32(id); _logic.GetTrainingDetail.Add(); } // trans.Complete(); } catch (MyException) { throw; } catch (Exception) { throw new Exception("出现异常,保存失败。"); } } Databound(); } } /***************************************** 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; } protected void listRoles_SelectedIndexChanged(object sender, EventArgs e) { //--重置人员树的选择 /* if (TreeDeptEmp.SelectedNode != null) TreeDeptEmp.SelectedNode.Selected = false; lbAuthRole.Text = "人员角色清单"; GvRole.DataSource = null; GvRole.DataBind(); * */ //--选择人员树复选框 GvRole.SelectedIndex = -1; ArrayList empList = new ArrayList(); DataTable dt =_logic.GetEmpByLesson(Convert.ToInt32(TreeLesson.SelectedValue)) ; foreach (DataRow dr in dt.Rows) { empList.Add(dr["ID"]); } SetCheckedNode(TreeEmp.Nodes, empList); bindGV(); } void bindGV( ) { //人员课程 清单 string nodevalue = TreeEmp.SelectedValue; if (nodevalue.Length >0 && nodevalue != "0") //selected node is an employee { lbEmRole.Text = TreeEmp.SelectedNode.Text + " 人员课程清单"; GvRole.DataSource = _logic.GetLessionsByEmp(Convert.ToInt32(nodevalue)); } GvRole.DataBind(); //课程对应的人员清单 if (TreeLesson.SelectedNode != null) { lbRoleEm.Text = TreeLesson.SelectedNode.Text + " 课程人员清单"; GvEm.DataSource = _logic.GetEmpByLesson(Convert.ToInt32(TreeLesson.SelectedValue)); } GvEm.DataBind(); } protected void TreeLesson_SelectedNodeChanged(object sender, EventArgs e) { GvEm.SelectedIndex = -1; bindGV(); } protected void GvRole_RowDataBound(object sender, GridViewRowEventArgs e) { Label lb; switch (e.Row.RowType) { case DataControlRowType.DataRow: lb = new Label(); lb.Text = e.Row.Cells[1].Text.Trim().Equals("True") ? "是" : "否"; e.Row.Cells[1].Controls.Add(lb); break; } } protected void GvEm_RowEditing(object sender, GridViewEditEventArgs e) { GvEm.EditIndex = e.NewEditIndex; GvEm.SelectedIndex = e.NewEditIndex; bindGV(); } protected void GvEm_RowCommand(object sender, GridViewCommandEventArgs e) { } protected void GvEm_RowUpdating(object sender, GridViewUpdateEventArgs e) { if (GvEm.DataKeys != null) { string id = GvEm.DataKeys[e.RowIndex].Value.ToString(); _logic.GetTrainingDetail.ID = Convert.ToInt32(id); _logic.GetTrainingDetail.getModel(); _logic.GetTrainingDetail.train_passed = ((CheckBox)GvEm.Rows[e.RowIndex].Cells[3].Controls[1]).Checked; _logic.GetTrainingDetail.train_passedDate = DateTime.Now.ToShortDateString(); //_logic.GetTrainingDetail.operater = _logic.GetTrainingDetail.Update(); } GvEm.EditIndex = -1; GvEm.SelectedIndex = e.RowIndex; bindGV(); } protected void GvEm_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GvEm.EditIndex = -1; GvEm.SelectedIndex = e.RowIndex; bindGV(); } }