using BLL; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using AspNet = System.Web.UI.WebControls; namespace FineUIPro.Web.DigData { public partial class ShowProjectWBSPackage : PageBase { /// /// /// public string ProjectId { get { return (string)ViewState["ProjectId"]; } set { ViewState["ProjectId"] = value; } } #region 页面加载 /// /// 页面加载 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.ProjectId = this.CurrUser.LoginProjectId; InitTreeMenu(); } } #endregion #region 加载树 /// /// 加载树 /// private void InitTreeMenu() { this.trWBS.Nodes.Clear(); this.trWBS.ShowBorder = false; this.trWBS.ShowHeader = false; this.trWBS.EnableIcons = true; this.trWBS.AutoScroll = true; this.trWBS.EnableSingleClickExpand = true; TreeNode rootNode1 = new TreeNode(); rootNode1.Text = "建筑工程"; rootNode1.NodeID = "1"; rootNode1.CommandName = "ProjectType"; rootNode1.EnableExpandEvent = true; rootNode1.EnableClickEvent = true; this.trWBS.Nodes.Add(rootNode1); TreeNode emptyNode = new TreeNode(); emptyNode.Text = ""; emptyNode.NodeID = ""; rootNode1.Nodes.Add(emptyNode); TreeNode rootNode2 = new TreeNode(); rootNode2.Text = "安装工程"; rootNode2.NodeID = "2"; rootNode2.CommandName = "ProjectType"; rootNode2.EnableExpandEvent = true; rootNode2.EnableClickEvent = true; this.trWBS.Nodes.Add(rootNode2); rootNode2.Nodes.Add(emptyNode); } #endregion #region 展开树 /// /// 展开树 /// /// /// protected void trWBS_NodeExpand(object sender, TreeNodeEventArgs e) { e.Node.Nodes.Clear(); if (e.Node.CommandName == "ProjectType") //展开工程类型 { var trUnitWork = from x in Funs.DB.WBS_UnitWork where x.ProjectId == this.ProjectId && x.SuperUnitWork == null && x.ProjectType == e.Node.NodeID select x; trUnitWork = trUnitWork.OrderBy(x => x.UnitWorkCode); if (trUnitWork.Count() > 0) { foreach (var trUnitWorkItem in trUnitWork) { TreeNode newNode = new TreeNode(); string uweights = string.Empty; if (trUnitWorkItem.Weights != null) { uweights = "(" + Convert.ToDouble(trUnitWorkItem.Weights).ToString() + "%)"; } newNode.Text = trUnitWorkItem.UnitWorkCode + "-" + trUnitWorkItem.UnitWorkName + uweights; newNode.NodeID = trUnitWorkItem.UnitWorkId; newNode.CommandName = "UnitWork"; newNode.EnableExpandEvent = true; newNode.EnableClickEvent = true; e.Node.Nodes.Add(newNode); if (BLL.WorkPackageService.GetWorkPackages1ByUnitWorkId(trUnitWorkItem.UnitWorkId.ToString()) != null) { TreeNode temp = new TreeNode(); temp.Text = "temp"; temp.NodeID = "temp"; newNode.Nodes.Add(temp); } } } } else if (e.Node.CommandName == "UnitWork") //展开单位工程节点 { var workPackages = from x in Funs.DB.WBS_WorkPackage where x.UnitWorkId == e.NodeID && x.SuperWorkPack == null && x.IsApprove == true orderby x.WorkPackageCode select x; foreach (var workPackage in workPackages) { TreeNode newNode = new TreeNode(); string weights = string.Empty; if (workPackage.Weights != null) { weights = "(" + Convert.ToDouble(workPackage.Weights).ToString() + "%)"; } newNode.Text = workPackage.PackageContent + weights; newNode.NodeID = workPackage.WorkPackageId; newNode.ToolTip = "[" + workPackage.InitWorkPackageCode + "]"; newNode.CommandName = "WorkPackage"; newNode.EnableExpandEvent = true; newNode.EnableClickEvent = true; e.Node.Nodes.Add(newNode); var childWorkPackages = from x in Funs.DB.WBS_WorkPackage where x.SuperWorkPackageId == workPackage.WorkPackageId && x.IsApprove == true select x; if (childWorkPackages.Count() > 0) { TreeNode emptyNode = new TreeNode(); emptyNode.Text = ""; emptyNode.NodeID = ""; newNode.Nodes.Add(emptyNode); } } } else if (e.Node.CommandName == "WorkPackage") //展开工作包节点 { var workPackages = from x in Funs.DB.WBS_WorkPackage where x.SuperWorkPackageId == e.Node.NodeID && x.IsApprove == true orderby x.WorkPackageCode select x; if (workPackages.Count() > 0) //存在子单位工程 { foreach (var workPackage in workPackages) { TreeNode newNode = new TreeNode(); string weights = string.Empty; if (workPackage.Weights != null) { weights = "(" + Convert.ToDouble(workPackage.Weights).ToString() + "%)"; } newNode.Text = workPackage.PackageContent + weights; newNode.NodeID = workPackage.WorkPackageId; newNode.ToolTip = "[" + workPackage.InitWorkPackageCode + "]"; newNode.CommandName = "WorkPackage"; newNode.EnableExpandEvent = true; newNode.EnableClickEvent = true; e.Node.Nodes.Add(newNode); var childWorkPackages = from x in Funs.DB.WBS_WorkPackage where x.SuperWorkPackageId == workPackage.WorkPackageId && x.IsApprove == true select x; if (childWorkPackages.Count() > 0) { TreeNode emptyNode = new TreeNode(); emptyNode.Text = ""; emptyNode.NodeID = ""; newNode.Nodes.Add(emptyNode); } } } } } #endregion #region Tree点击事件 /// /// Tree点击事件 /// /// /// protected void trWBS_NodeCommand(object sender, TreeCommandEventArgs e) { BindGrid(); } #endregion #region 绑定数据 protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { Grid1.PageIndex = e.NewPageIndex; BindGrid(); } /// /// Grid1排序 /// /// /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { BindGrid(); } /// /// 分页下拉选择事件 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } /// /// 加载Grid /// private void BindGrid() { string strSql = @"SELECT ControlItemAndCycleId,ControlItemAndCycleCode,InitControlItemCode,PlanCompleteDate,ControlItemContent,ControlPoint,ControlItemDef,Weights,HGForms,SHForms,Standard,ClauseNo,CheckNum" + @" FROM WBS_ControlItemAndCycle "; List listStr = new List(); strSql += " where WorkPackageId = @WorkPackageId and IsApprove=1 "; listStr.Add(new SqlParameter("@WorkPackageId", this.trWBS.SelectedNodeID)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); Grid1.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } #endregion #region 保存事件 /// /// 保存 /// /// /// protected void btnSave_Click(object sender, EventArgs e) { ///Type1|fda5ce7d-1d97-469c-9f43-9f7b2ec35ba8|000441b4-a471-4d1e-b851-19c950a5b61a[68]|ae650220-309f-42d4-acdc-6de91c9ec758[6801]&建筑工程|082-全场道路|道路|路基工程定位测量放线$24f40e7c-0b86-44b1-a498-08174113c36a ///返回 树 父节点ID+[初始WBS主键]+"|" +节点ID+[初始WBS主键]+"&"+树父节点名称+"|"+ 节点名称+"|"+ 工作包名称+"$"+工作包ID string selectValues = string.Empty; if (!string.IsNullOrEmpty(this.Grid1.SelectedRowID) && this.trWBS.SelectedNode != null) { var getC = Funs.DB.WBS_ControlItemAndCycle.FirstOrDefault(x => x.ControlItemAndCycleId == this.Grid1.SelectedRowID); if (getC != null) { selectValues = getSelectIds(this.trWBS.SelectedNode, this.trWBS.SelectedNodeID + this.trWBS.SelectedNode.ToolTip) + "&" + getSelectNames(this.trWBS.SelectedNode, this.trWBS.SelectedNode.Text) + getC .ControlItemContent+ "$" + this.Grid1.SelectedRowID; } PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(selectValues) + ActiveWindow.GetHidePostBackReference()); } else { Alert.ShowInParent("请选择工作包!", MessageBoxIcon.Warning); } } #endregion /// /// id /// /// /// /// private string getSelectIds(TreeNode node, string id) { if (node.ParentNode != null) { if (node.ParentNode.NodeID == "1" || node.ParentNode.NodeID == "2") { id = "Type" + node.ParentNode.NodeID + "|" + id; } else { id = getSelectIds(node.ParentNode, node.ParentNode.NodeID + node.ParentNode.ToolTip + "|" + id); } } return id; } /// /// 名称 /// /// /// /// private string getSelectNames(TreeNode node, string name) { if (node.ParentNode != null) { if (node.ParentNode.NodeID == "1" || node.ParentNode.NodeID == "2") { name = node.ParentNode.Text + "|" + name; } else { name = getSelectNames(node.ParentNode, node.ParentNode.Text + "|" + name); } } return name; } } }