using BLL; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.PHTGL.ContractCompile { public partial class ContractTrackProgressDetectionGrid : PageBase { #region Page_Init // 注意:动态创建的代码需要放置于Page_Init(不是Page_Load),这样每次构造页面时都会执行 protected void Page_Init(object sender, EventArgs e) { InitGrid(); } public DataTable GridTable=new DataTable(); private void InitGrid() { FineUIPro.BoundField bf; FineUIPro.RenderField rf; FineUIPro.TextBox txTextBox; ContractId = Request.Params["ContractId"]; GridTable.Columns.Add("Id"); ListItem[] list = new ListItem[8]; list[0] = new ListItem("主项号", "MainItemCode"); list[1] = new ListItem("主项名称", "MainItemName"); list[2] = new ListItem("专业工程名称", "MajorName"); list[3] = new ListItem("专业代码", "MajorCode"); //list[4] = new ListItem("分部工程", "SubProject"); //list[5] = new ListItem("子分部工程", "SubItemProject"); list[4] = new ListItem("项目编码", "ProjectCode"); list[5] = new ListItem("项目名称", "ProjectName"); list[6] = new ListItem("项目特征描述", "ProjectDescription"); list[7] = new ListItem("计量单位", "UnitOfMeasurement"); foreach (var item in list) { bf = new FineUIPro.BoundField(); bf.ColumnID = item.Value; bf.DataField = item.Value; bf.HeaderText = item.Text; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; bf.Locked = true; Grid1.Columns.Add(bf); GridTable.Columns.Add(item.Value); } if (!string.IsNullOrEmpty(ContractId)) { Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack(); queryContractTrack.ProjectId = this.CurrUser.LoginProjectId; queryContractTrack.ContractId = this.ContractId; var modelContractTracks = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack); if (modelContractTracks.Count==0) return; Model.PHTGL_ContractTrackProgress table = new Model.PHTGL_ContractTrackProgress(); table.ContractTrackId = modelContractTracks[0].Id; var tb = BLL.PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByModle(table); foreach (var item in tb) { //string date = item.Date.Replace("-", ""); string date = item.Date+"#" ; GroupField p = new GroupField(); p.HeaderText = item.Date; p.TextAlign = TextAlign.Center; GroupField p1 = new GroupField(); p1.HeaderText = "当月进展情况"; p1.TextAlign = TextAlign.Center; GroupField p1BCWS = new GroupField(); p1BCWS.HeaderText = "BCWS"; p1BCWS.TextAlign = TextAlign.Center; GroupField p1ACWP = new GroupField(); p1ACWP.HeaderText = "ACWP"; p1ACWP.TextAlign = TextAlign.Center; GroupField p2 = new GroupField(); p2.HeaderText = "累计进展情况"; p2.TextAlign = TextAlign.Center; GroupField p2BCWS = new GroupField(); p2BCWS.HeaderText = "BCWS"; p2BCWS.TextAlign = TextAlign.Center; GroupField p2ACWP = new GroupField(); p2ACWP.HeaderText = "ACWP"; p2ACWP.TextAlign = TextAlign.Center; #region 当月进展情况 #region BCWS txTextBox = new FineUIPro.TextBox(); txTextBox.ID = "txt" +date+ "BCWS_Quantity"; rf = new RenderField(); rf.ColumnID = date+"BCWS_Quantity"; rf.DataField = date+"BCWS_Quantity"; rf.HeaderText = "工程量"; rf.TextAlign = FineUIPro.TextAlign.Left; rf.Editor.Add(txTextBox); p1BCWS.Columns.Add(rf); GridTable.Columns.Add(date + "BCWS_Quantity"); bf = new FineUIPro.BoundField(); bf.ColumnID = date + "BCWS_OutputValue"; bf.DataField = date + "BCWS_OutputValue"; bf.HeaderText = "产值(元)"; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; p1BCWS.Columns.Add(bf); GridTable.Columns.Add(date + "BCWS_OutputValue"); bf = new FineUIPro.BoundField(); bf.ColumnID = date + "BCWS_Percentage"; bf.DataField = date + "BCWS_Percentage"; bf.HeaderText = "百分比/%"; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; p1BCWS.Columns.Add(bf); GridTable.Columns.Add(date + "BCWS_Percentage"); #endregion #region ACWP txTextBox = new FineUIPro.TextBox(); txTextBox.ID = "txt" + date + "ACWP_Quantity"; rf = new RenderField(); rf.ColumnID = date + "ACWP_Quantity"; rf.DataField = date + "ACWP_Quantity"; rf.HeaderText = "工程量"; rf.TextAlign = FineUIPro.TextAlign.Left; rf.Editor.Add(txTextBox); p1ACWP.Columns.Add(rf); GridTable.Columns.Add(date + "ACWP_Quantity"); bf = new FineUIPro.BoundField(); bf.ColumnID = date + "ACWP_OutputValue"; bf.DataField = date + "ACWP_OutputValue"; bf.HeaderText = "产值(元)"; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; p1ACWP.Columns.Add(bf); GridTable.Columns.Add(date + "ACWP_OutputValue"); bf = new FineUIPro.BoundField(); bf.ColumnID = date + "ACWP_Percentage"; bf.DataField = date + "ACWP_Percentage"; bf.HeaderText = "百分比/%"; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; p1ACWP.Columns.Add(bf); GridTable.Columns.Add(date + "ACWP_Percentage"); #endregion #endregion #region 累计进展情况 #region BCWS txTextBox = new FineUIPro.TextBox(); txTextBox.ID = "txt" + date + "SumBCWS_Quantity"; rf = new RenderField(); rf.ColumnID = date + "SumBCWS_Quantity"; rf.DataField = date + "SumBCWS_Quantity"; rf.HeaderText = "工程量"; rf.TextAlign = FineUIPro.TextAlign.Left; rf.Editor.Add(txTextBox); p2BCWS.Columns.Add(rf); GridTable.Columns.Add(date + "SumBCWS_Quantity"); bf = new FineUIPro.BoundField(); bf.ColumnID = date + "SumBCWS_OutputValue"; bf.DataField = date + "SumBCWS_OutputValue"; bf.HeaderText = "产值(元)"; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; p2BCWS.Columns.Add(bf); GridTable.Columns.Add(date + "SumBCWS_OutputValue"); bf = new FineUIPro.BoundField(); bf.ColumnID = date + "SumBCWS_Percentage"; bf.DataField = date + "SumBCWS_Percentage"; bf.HeaderText = "百分比/%"; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; p2BCWS.Columns.Add(bf); GridTable.Columns.Add(date + "SumBCWS_Percentage"); #endregion #region ACWP txTextBox = new FineUIPro.TextBox(); txTextBox.ID = "txt" + date + "SumACWP_Quantity"; rf = new RenderField(); rf.ColumnID = date + "SumACWP_Quantity"; rf.DataField = date + "SumACWP_Quantity"; rf.HeaderText = "工程量"; rf.TextAlign = FineUIPro.TextAlign.Left; rf.Editor.Add(txTextBox); p2ACWP.Columns.Add(rf); GridTable.Columns.Add(date + "SumACWP_Quantity"); bf = new FineUIPro.BoundField(); bf.ColumnID = date + "SumACWP_OutputValue"; bf.DataField = date + "SumACWP_OutputValue"; bf.HeaderText = "产值(元)"; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; p2ACWP.Columns.Add(bf); GridTable.Columns.Add(date + "SumACWP_OutputValue"); bf = new FineUIPro.BoundField(); bf.ColumnID = date + "SumACWP_Percentage"; bf.DataField = date + "SumACWP_Percentage"; bf.HeaderText = "百分比/%"; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; p2ACWP.Columns.Add(bf); GridTable.Columns.Add(date + "SumACWP_Percentage"); #endregion #endregion p1.Columns.Add(p1BCWS); p1.Columns.Add(p1ACWP); p2.Columns.Add(p2BCWS); p2.Columns.Add(p2ACWP); p.Columns.Add(p1); p.Columns.Add(p2); Grid1.Columns.Add(p); } } } #endregion public string ContractId { get => (string)ViewState["ContractId"]; set => ViewState["ContractId"] = value; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.GetButtonPower(); PHTGL_QuantityService.IniGetMajorItems3DownList(drpMajorItems, true); // 绑定表格 this.BindGrid(); } } #region 绑定数据 /// /// 绑定数据 /// private void BindGrid() { if (!string .IsNullOrEmpty(ContractId)) { DataRow row; Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack(); queryContractTrack.ProjectId = this.CurrUser.LoginProjectId; queryContractTrack.ContractId = this.ContractId; queryContractTrack.MainItemName = this.txtMainItemName.Text.Trim(); if (drpMajorItems.SelectedValue != Const._Null) { queryContractTrack.MajorName = drpMajorItems.SelectedValue; } var modelContractTracks = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack); var count = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack).Count(); modelContractTracks= modelContractTracks.Skip(Grid1.PageSize * Grid1.PageIndex).Take(Grid1.PageSize).ToList(); foreach (var item in modelContractTracks) { row= GridTable.NewRow(); row["Id"] = item.Id; row["MainItemCode"] = item.MainItemCode; row["MainItemName"] = item.MainItemName; row["MajorName"] = item.MajorName; row["MajorCode"] = item.MajorCode; //row["SubProject"] = item.SubProject; //row["SubItemProject"] = item.SubItemProject; row["ProjectCode"] = item.ProjectCode; row["ProjectName"] = item.ProjectName; row["ProjectDescription"] = item.ProjectDescription; row["UnitOfMeasurement"] = item.UnitOfMeasurement; Model.PHTGL_ContractTrackProgress qContractTrackProgress = new Model.PHTGL_ContractTrackProgress(); qContractTrackProgress.ContractTrackId = item.Id; var modelContractTrackProgresses = BLL.PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByModle(qContractTrackProgress); foreach (var detail in modelContractTrackProgresses) { // var date=detail.Date.Replace("-", ""); var date=detail.Date + "#"; row[date+ "BCWS_Quantity"] = detail.BCWS_Quantity; row[date+ "BCWS_OutputValue"] = detail.BCWS_OutputValue; row[date+ "BCWS_Percentage"] = detail.BCWS_Percentage; row[date+ "ACWP_Quantity"] = detail.ACWP_Quantity; row[date+ "ACWP_OutputValue"] = detail.ACWP_OutputValue; row[date+ "ACWP_Percentage"] = detail.ACWP_Percentage; var SumModel = PhtglContracttrackprogressService.GetSumProgress(detail.ContractTrackProgressId); row[date + "SumBCWS_Quantity"] = SumModel.BCWS_Quantity; row[date + "SumBCWS_OutputValue"] = SumModel.BCWS_OutputValue; row[date + "SumBCWS_Percentage"] = SumModel.BCWS_Percentage; row[date + "SumACWP_Quantity"] = SumModel.ACWP_Quantity; row[date + "SumACWP_OutputValue"] = SumModel.ACWP_OutputValue; row[date + "SumACWP_Percentage"] = SumModel.ACWP_Percentage; } GridTable.Rows.Add(row); } Grid1.RecordCount = count; Grid1.DataSource = GridTable; Grid1.DataBind(); } } protected void Grid1_OnRowDataBound(object sender, GridRowEventArgs e) { if (!string.IsNullOrEmpty(ContractId)) { Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack(); queryContractTrack.ProjectId = this.CurrUser.LoginProjectId; queryContractTrack.ContractId = this.ContractId; var modelContractTracks = BLL.PhtglContractTrackService.GetFirstPHTGL_ContractTrackByModle(queryContractTrack); if (modelContractTracks ==null) return; Model.PHTGL_ContractTrackProgress qContractTrackProgress = new Model.PHTGL_ContractTrackProgress(); qContractTrackProgress.ContractTrackId = modelContractTracks.Id; var modelContractTrackProgresses = BLL.PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByModle(qContractTrackProgress); foreach (var detail in modelContractTrackProgresses) { var date = detail.Date + "#"; RenderField rfRenderField1 = Grid1.FindColumn(date + "BCWS_Quantity") as RenderField; BoundField bf1 = Grid1.FindColumn(date + "BCWS_OutputValue") as BoundField; BoundField bf2 = Grid1.FindColumn(date + "BCWS_Percentage") as BoundField; e.CellAttributes[rfRenderField1.ColumnIndex]["data-color"] = "color1"; e.CellAttributes[bf1.ColumnIndex]["data-color"] = "color1"; e.CellAttributes[bf2.ColumnIndex]["data-color"] = "color1"; RenderField rfRenderField2 = Grid1.FindColumn(date + "SumBCWS_Quantity") as RenderField; BoundField bf3 = Grid1.FindColumn(date + "SumBCWS_OutputValue") as BoundField; BoundField bf4 = Grid1.FindColumn(date + "SumBCWS_Percentage") as BoundField; e.CellAttributes[rfRenderField2.ColumnIndex]["data-color"] = "color1"; e.CellAttributes[bf3.ColumnIndex]["data-color"] = "color1"; e.CellAttributes[bf4.ColumnIndex]["data-color"] = "color1"; } //foreach (var item in modelContractTracks) //{ //} } } #endregion #region GV 数据操作 /// /// 过滤表头 /// /// /// //protected void Grid1_FilterChange(object sender, EventArgs e) //{ // this.BindGrid(); //} /// /// 分页 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { this.Grid1.PageIndex = e.NewPageIndex; this.BindGrid(); } /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { this.Grid1.SortDirection = e.SortDirection; this.Grid1.SortField = e.SortField; this.BindGrid(); } /// /// 分页显示条数下拉框 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { this.BindGrid(); } #endregion #region 数据编辑事件 /// /// 编辑按钮 /// /// /// protected void btnEdit_Click(object sender, EventArgs e) { if (Grid1.SelectedRowIndexArray.Length == 0) { Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning); return; } string ID = Grid1.SelectedRowID; var model = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackById(ID); if (model != null) ///已上报时不能删除 { PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ContractTrackEdit.aspx?Id={0}", ID, "编辑 - "))); } } /// /// Grid行双击事件 /// /// /// protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e) { this.btnEdit_Click(null, null); } protected void btnSave_OnClick(object sender, EventArgs e) { JArray EditorArr = Grid1.GetMergedData(); if (EditorArr.Count > 0) { for (int i = 0; i < EditorArr.Count; i++) { JObject objects = (JObject)EditorArr[i]; var listfiled = objects["values"].ToList(); var Id = objects["id"].ToString(); var model = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackById(Id); if (model!=null) { foreach (var item in listfiled) //遍历行中的字段 { var b = item; var txtname = b.First.Path.Substring(b.First.Path.LastIndexOf('.') + 1); var txtvalue = b.First.Value(); string date = txtname.Split('#')[0].ToString(); string filed = txtname.Split('#')[1].ToString(); var modelContractTrackProgress = PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByTrackIdAndDate(Id, date); if (modelContractTrackProgress!=null) { switch (filed) { case "ACWP_Quantity": modelContractTrackProgress.ACWP_Quantity = Funs.GetNewDecimalOrZero(txtvalue) ; break; case "BCWS_Quantity": modelContractTrackProgress.BCWS_Quantity = Funs.GetNewDecimalOrZero(txtvalue); break; } } PhtglContracttrackprogressService.UpdatePHTGL_ContractTrackProgress(modelContractTrackProgress); } } } } CheckProgressd(); BindGrid(); } /// /// 修改产值/百分比 /// private void CheckProgressd() { if (!string.IsNullOrEmpty(ContractId)) { Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack(); queryContractTrack.ProjectId = this.CurrUser.LoginProjectId; queryContractTrack.ContractId = this.ContractId; var modelContractTracks = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack); foreach (var item in modelContractTracks) { PhtglContracttrackprogressService.CheckProgressByContractTrackId(item.Id); } } } protected void btnQuery_OnClick(object sender, EventArgs e) { BindGrid(); } protected void btnGetChart_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(ContractId)) { var model = ContractService.GetContractById(ContractId); if (model != null) { PageContext.RegisterStartupScript( Window2.GetShowReference(string.Format("ContractTrackProgressChart.aspx?ContractId={0}", model.ContractId, "图表 - "))); } } else { ShowNotify("请选择施工分包合同", MessageBoxIcon.Question); } } #endregion #region 获取权限按钮 /// /// 获取按钮权限 /// /// /// private void GetButtonPower() { var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, BLL.Const.PHTGL_ContractTrackProgressDetectionMenuId); if (buttonList.Count > 0) { if (buttonList.Contains(BLL.Const.BtnAdd)) { //this.btnNew.Hidden = false; } if (buttonList.Contains(BLL.Const.BtnModify)) { // this.btnMenuEdit.Hidden = false; } if (buttonList.Contains(BLL.Const.BtnDelete)) { // this.btnMenuDelete.Hidden = false; } } } #endregion #region 关闭弹出窗 /// /// 关闭弹出窗 /// /// /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { BindGrid(); } #endregion #region 导出按钮 /// 导出按钮 /// /// /// protected void btnOut_Click(object sender, EventArgs e) { Response.ClearContent(); string filename = Funs.GetNewFileName(); Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("进度检测表" + filename, System.Text.Encoding.UTF8) + ".xls"); Response.ContentType = "application/excel"; Response.ContentEncoding = System.Text.Encoding.UTF8; this.Grid1.PageSize = 500; this.BindGrid(); Response.Write(GetGridTableHtml(Grid1)); Response.End(); } /// /// 导出方法 /// /// /// //private string GetGridTableHtml(Grid grid) //{ // StringBuilder sb = new StringBuilder(); // sb.Append(""); // sb.Append(""); // sb.Append(""); // foreach (GridColumn column in grid.Columns) // { // sb.AppendFormat("", column.HeaderText); // } // sb.Append(""); // foreach (GridRow row in grid.Rows) // { // sb.Append(""); // foreach (GridColumn column in grid.Columns) // { // string html = row.Values[column.ColumnIndex].ToString(); // if (column.ColumnID == "tfNumber") // { // html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; // } // sb.AppendFormat("", html); // } // sb.Append(""); // } // sb.Append("
{0}
{0}
"); // return sb.ToString(); //} private string GetGridTableHtml(Grid grid) { StringBuilder sb = new StringBuilder(); MultiHeaderTable mht = new MultiHeaderTable(); mht.ResolveMultiHeaderTable(Grid1.Columns); sb.Append(""); sb.Append(""); foreach (List rows in mht.MultiTable) { sb.Append(""); foreach (object[] cell in rows) { int rowspan = Convert.ToInt32(cell[0]); int colspan = Convert.ToInt32(cell[1]); GridColumn column = cell[2] as GridColumn; sb.AppendFormat("{3}", rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "", colspan != 1 ? " colspan=\"" + colspan + "\"" : "", colspan != 1 ? " style=\"text-align:center;\"" : "", column.HeaderText); } sb.Append(""); } foreach (GridRow row in grid.Rows) { sb.Append(""); foreach (GridColumn column in mht.Columns) { string html = row.Values[column.ColumnIndex].ToString(); if (column.ColumnID == "tfNumber") { html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; } else if (column.ColumnID == "tfGender") { html = (row.FindControl("labGender") as System.Web.UI.WebControls.Label).Text; } sb.AppendFormat("", html); } sb.Append(""); } sb.Append("
{0}
"); return sb.ToString(); } #endregion } }