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
 | |
|     }
 | |
| } |