145 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			145 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using System.Linq; | |||
|  | using System.Web; | |||
|  | using System.Web.UI; | |||
|  | using System.Web.UI.WebControls; | |||
|  | using BLL; | |||
|  | 
 | |||
|  | namespace FineUIPro.Web.ProjectData | |||
|  | { | |||
|  |     public partial class ShowMainItem : PageBase | |||
|  |     { | |||
|  |         protected void Page_Load(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (!IsPostBack) | |||
|  |             { | |||
|  |                 InitTree(Request.Params["id"], Request.Params["unitWorkId"]); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         #region 初始化树 | |||
|  |         /// <summary> | |||
|  |         /// 初始化树 | |||
|  |         /// </summary> | |||
|  |         /// <param name="menuList">菜单集合</param> | |||
|  |         private void InitTree(string id, string unitWorkId) | |||
|  |         { | |||
|  |             this.tvMenu.Nodes.Clear(); | |||
|  |             Model.SGGLDB db = Funs.DB; | |||
|  | 
 | |||
|  |             var mainItems = from x in db.ProjectData_MainItem where x.ProjectId == this.CurrUser.LoginProjectId select x; | |||
|  |             string otherIds = string.Empty; | |||
|  |             var otherUnitWorks = from x in db.WBS_UnitWork where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId != unitWorkId select x; | |||
|  |             foreach (var otherUnitWork in otherUnitWorks) | |||
|  |             { | |||
|  |                 if (!string.IsNullOrEmpty(otherUnitWork.MainItemAndDesignProfessionalIds)) | |||
|  |                 { | |||
|  |                     otherIds += otherUnitWork.MainItemAndDesignProfessionalIds; | |||
|  |                 } | |||
|  |             } | |||
|  |             var allDesignProfessionals = from x in db.Base_DesignProfessional select x; | |||
|  |             foreach (var item in mainItems) | |||
|  |             { | |||
|  |                 TreeNode rootNode = new TreeNode | |||
|  |                 { | |||
|  |                     Text = item.MainItemCode + "-" + item.MainItemName, | |||
|  |                     NodeID = item.MainItemId, | |||
|  |                     EnableCheckBox = true, | |||
|  |                     EnableCheckEvent = true, | |||
|  |                     Expanded = true | |||
|  |                 }; | |||
|  |                 if (!string.IsNullOrEmpty(id) && id.Contains(rootNode.NodeID)) | |||
|  |                 { | |||
|  |                     rootNode.Checked = true; | |||
|  |                 } | |||
|  |                 this.tvMenu.Nodes.Add(rootNode); | |||
|  |                 var designProfessionals = from x in allDesignProfessionals where item.DesignProfessionalIds.Split(',').Contains(x.DesignProfessionalId) select x; | |||
|  |                 foreach (var designProfessional in designProfessionals) | |||
|  |                 { | |||
|  |                     TreeNode node = new TreeNode | |||
|  |                     { | |||
|  |                         Text = designProfessional.ProfessionalName, | |||
|  |                         NodeID = item.MainItemId + "|" + designProfessional.DesignProfessionalId, | |||
|  |                         EnableCheckBox = true, | |||
|  |                         EnableCheckEvent = true, | |||
|  |                     }; | |||
|  |                     if (!string.IsNullOrEmpty(id) && id.Contains(node.NodeID)) | |||
|  |                     { | |||
|  |                         node.Checked = true; | |||
|  |                     } | |||
|  |                     if (!string.IsNullOrEmpty(otherIds) && otherIds.Contains(node.NodeID)) | |||
|  |                     { | |||
|  |                         node.EnableCheckBox = false; | |||
|  |                     } | |||
|  |                     rootNode.Nodes.Add(node); | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 保存事件 | |||
|  |         /// <summary> | |||
|  |         /// 保存 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void btnSave_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             string ids = string.Empty; | |||
|  |             TreeNode[] nodes = this.tvMenu.GetCheckedNodes(); | |||
|  |             if (nodes.Length > 0) | |||
|  |             { | |||
|  |                 foreach (TreeNode tn in nodes) | |||
|  |                 { | |||
|  |                     if (tn.NodeID.Contains("|")) | |||
|  |                     { | |||
|  |                         ids += tn.NodeID + ","; | |||
|  |                     } | |||
|  |                 } | |||
|  |                 if (!string.IsNullOrEmpty(ids)) | |||
|  |                 { | |||
|  |                     ids = ids.Substring(0, ids.Length - 1); | |||
|  |                 } | |||
|  |             } | |||
|  |             PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(ids) + ActiveWindow.GetHidePostBackReference()); | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 全选、全不选 | |||
|  |         /// <summary> | |||
|  |         /// 全选、全不选 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void tvMenu_NodeCheck(object sender, FineUIPro.TreeCheckEventArgs e) | |||
|  |         { | |||
|  |             if (e.Checked) | |||
|  |             { | |||
|  |                 this.tvMenu.CheckAllNodes(e.Node.Nodes); | |||
|  |                 SetCheckParentNode(e.Node); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 this.tvMenu.UncheckAllNodes(e.Node.Nodes); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 选中父节点 | |||
|  |         /// </summary> | |||
|  |         /// <param name="node"></param> | |||
|  |         private void SetCheckParentNode(TreeNode node) | |||
|  |         { | |||
|  |             if (node.ParentNode != null && node.ParentNode.NodeID != "0") | |||
|  |             { | |||
|  |                 node.ParentNode.Checked = true; | |||
|  |                 if (node.ParentNode.ParentNode != null) | |||
|  |                 { | |||
|  |                     SetCheckParentNode(node.ParentNode); | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  |         #endregion | |||
|  |     } | |||
|  | } |