SGGL_SHJ/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackProgressDetect...

736 lines
30 KiB
C#
Raw Normal View History

2023-10-24 14:23:46 +08:00
using BLL;
using Newtonsoft.Json.Linq;
using System;
2023-11-10 15:21:35 +08:00
using System.Collections.Concurrent;
2023-10-24 14:23:46 +08:00
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
2023-11-10 15:21:35 +08:00
using System.Threading.Tasks;
2023-10-24 14:23:46 +08:00
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();
2023-10-24 14:23:46 +08:00
private void InitGrid()
{
FineUIPro.BoundField bf;
FineUIPro.RenderField rf;
FineUIPro.TextBox txTextBox;
ContractId = Request.Params["ContractId"];
GridTable.Columns.Add("Id");
2023-11-13 17:46:33 +08:00
GridTable.Columns.Add("SerialNumber");
2023-10-24 14:23:46 +08:00
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");
2023-11-08 17:26:59 +08:00
//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");
2023-10-24 14:23:46 +08:00
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;
2023-11-08 17:26:59 +08:00
bf.Locked = true;
2023-10-24 14:23:46 +08:00
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;
2023-11-10 15:21:35 +08:00
var modelContractTracks = BLL.PhtglContractTrackService.GetFirstPHTGL_ContractTrackByModle(queryContractTrack);
if (modelContractTracks == null) return;
2023-10-24 14:23:46 +08:00
Model.PHTGL_ContractTrackProgress table = new Model.PHTGL_ContractTrackProgress();
2023-11-10 15:21:35 +08:00
table.ContractTrackId = modelContractTracks.Id;
2023-10-24 14:23:46 +08:00
var tb = BLL.PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByModle(table);
foreach (var item in tb)
{
//string date = item.Date.Replace("-", "");
string date = item.Date + "#";
2023-10-24 14:23:46 +08:00
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;
2023-11-10 15:21:35 +08:00
p1BCWS.Attributes["data-color"] = "color1";
2023-10-24 14:23:46 +08:00
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;
2023-11-10 15:21:35 +08:00
p2BCWS.Attributes["data-color"] = "color1";
2023-10-24 14:23:46 +08:00
GroupField p2ACWP = new GroupField();
p2ACWP.HeaderText = "ACWP";
p2ACWP.TextAlign = TextAlign.Center;
#region
#region BCWS
txTextBox = new FineUIPro.TextBox();
txTextBox.ID = "txt" + date + "BCWS_Quantity";
2023-10-24 14:23:46 +08:00
rf = new RenderField();
rf.ColumnID = date + "BCWS_Quantity";
rf.DataField = date + "BCWS_Quantity";
2023-10-24 14:23:46 +08:00
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";
2023-10-25 23:30:52 +08:00
bf.HeaderText = "产值(元)";
2023-10-24 14:23:46 +08:00
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";
2023-10-25 23:30:52 +08:00
bf.HeaderText = "百分比/%";
2023-10-24 14:23:46 +08:00
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";
2023-10-25 23:30:52 +08:00
bf.HeaderText = "产值(元)";
2023-10-24 14:23:46 +08:00
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";
2023-10-25 23:30:52 +08:00
bf.HeaderText = "百分比/%";
2023-10-24 14:23:46 +08:00
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";
2023-10-25 23:30:52 +08:00
bf.HeaderText = "产值(元)";
2023-10-24 14:23:46 +08:00
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";
2023-10-25 23:30:52 +08:00
bf.HeaderText = "百分比/%";
2023-10-24 14:23:46 +08:00
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";
2023-10-25 23:30:52 +08:00
bf.HeaderText = "产值(元)";
2023-10-24 14:23:46 +08:00
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";
2023-10-25 23:30:52 +08:00
bf.HeaderText = "百分比/%";
2023-10-24 14:23:46 +08:00
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);
2023-10-24 14:23:46 +08:00
Grid1.Columns.Add(p);
}
2023-10-24 14:23:46 +08:00
}
}
2023-10-24 14:23:46 +08:00
#endregion
public string ContractId
{
get => (string)ViewState["ContractId"];
set => ViewState["ContractId"] = value;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.GetButtonPower();
2023-11-01 23:12:52 +08:00
PHTGL_QuantityService.IniGetMajorItems3DownList(drpMajorItems, true);
2023-10-24 14:23:46 +08:00
// 绑定表格
2023-11-01 23:12:52 +08:00
this.BindGrid();
2023-10-24 14:23:46 +08:00
}
}
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
2023-11-10 15:21:35 +08:00
if (!string.IsNullOrEmpty(ContractId))
2023-10-24 14:23:46 +08:00
{
Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack();
queryContractTrack.ProjectId = this.CurrUser.LoginProjectId;
queryContractTrack.ContractId = this.ContractId;
2023-11-01 23:12:52 +08:00
queryContractTrack.MainItemName = this.txtMainItemName.Text.Trim();
if (drpMajorItems.SelectedValue != Const._Null)
{
queryContractTrack.MajorName = drpMajorItems.SelectedValue;
}
var modelContractTracks =
BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack);
2023-11-10 15:21:35 +08:00
2023-11-01 23:12:52 +08:00
var count = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack).Count();
2023-11-10 15:21:35 +08:00
modelContractTracks = modelContractTracks.Skip(Grid1.PageSize * Grid1.PageIndex).Take(Grid1.PageSize).ToList();
var splitContractTracks = Funs.SplitList(modelContractTracks, 10);
ParallelOptions parallelOptions = new ParallelOptions();
parallelOptions.MaxDegreeOfParallelism = Environment.ProcessorCount;
var concurrentGridTable = new ConcurrentDictionary<string, DataRow>();
// 使用 Parallel.ForEach 来并行处理拆分后的列表
Parallel.ForEach(splitContractTracks, parallelOptions, sublist =>
2023-10-24 14:23:46 +08:00
{
2023-11-10 15:21:35 +08:00
var tempTable = GridTable.Clone(); // 创建临时的 DataTable
foreach (var item in sublist)
2023-10-24 14:23:46 +08:00
{
2023-11-10 15:21:35 +08:00
DataRow row = tempTable.NewRow();
2023-11-13 17:46:33 +08:00
row["SerialNumber"] = item.SerialNumber;
2023-11-10 15:21:35 +08:00
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;
}
concurrentGridTable.TryAdd(item.Id, row);
// GridTable.Rows.Add(row);
2023-10-24 14:23:46 +08:00
}
2023-11-10 15:21:35 +08:00
});
// 将线程安全的数据拷贝到 GridTable
foreach (var kvp in concurrentGridTable)
{
DataRow newRow = GridTable.NewRow();
newRow.ItemArray = kvp.Value.ItemArray; // 使用 ImportRow 方法创建新的行
GridTable.Rows.Add(newRow);
2023-10-24 14:23:46 +08:00
}
2023-11-01 23:12:52 +08:00
Grid1.RecordCount = count;
Grid1.DataSource = GridTable.AsEnumerable().OrderBy(x => x["SerialNumber"].ToString(), new CustomComparer()); ;
2023-10-24 14:23:46 +08:00
Grid1.DataBind();
}
}
2023-10-27 09:00:21 +08:00
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;
2023-11-01 23:12:52 +08:00
var modelContractTracks = BLL.PhtglContractTrackService.GetFirstPHTGL_ContractTrackByModle(queryContractTrack);
2023-11-10 15:21:35 +08:00
if (modelContractTracks == null) return;
2023-11-01 23:12:52 +08:00
Model.PHTGL_ContractTrackProgress qContractTrackProgress = new Model.PHTGL_ContractTrackProgress();
qContractTrackProgress.ContractTrackId = modelContractTracks.Id;
var modelContractTrackProgresses = BLL.PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByModle(qContractTrackProgress);
foreach (var detail in modelContractTrackProgresses)
2023-10-27 09:00:21 +08:00
{
2023-11-01 23:12:52 +08:00
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;
2023-10-27 09:00:21 +08:00
2023-11-01 23:12:52 +08:00
e.CellAttributes[rfRenderField1.ColumnIndex]["data-color"] = "color1";
e.CellAttributes[bf1.ColumnIndex]["data-color"] = "color1";
e.CellAttributes[bf2.ColumnIndex]["data-color"] = "color1";
2023-10-27 09:00:21 +08:00
2023-11-01 23:12:52 +08:00
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;
2023-10-27 09:00:21 +08:00
2023-11-01 23:12:52 +08:00
e.CellAttributes[rfRenderField2.ColumnIndex]["data-color"] = "color1";
e.CellAttributes[bf3.ColumnIndex]["data-color"] = "color1";
e.CellAttributes[bf4.ColumnIndex]["data-color"] = "color1";
2023-10-27 09:00:21 +08:00
2023-11-10 15:21:35 +08:00
}
2023-10-27 09:00:21 +08:00
}
}
2023-10-24 14:23:46 +08:00
#endregion
#region GV
/// <summary>
/// 过滤表头
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//protected void Grid1_FilterChange(object sender, EventArgs e)
//{
// this.BindGrid();
//}
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.Grid1.PageIndex = e.NewPageIndex;
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.Grid1.SortDirection = e.SortDirection;
this.Grid1.SortField = e.SortField;
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 编辑按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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, "编辑 - ")));
}
}
/// <summary>
/// Grid行双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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++)
{
2023-10-24 14:23:46 +08:00
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>();
string date = txtname.Split('#')[0].ToString();
string filed = txtname.Split('#')[1].ToString();
var modelContractTrackProgress = PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByTrackIdAndDate(Id, date);
if (modelContractTrackProgress != null)
{
switch (filed)
{
2023-10-24 14:23:46 +08:00
case "ACWP_Quantity":
modelContractTrackProgress.ACWP_Quantity = Funs.GetNewDecimalOrZero(txtvalue);
2023-10-24 14:23:46 +08:00
break;
case "BCWS_Quantity":
modelContractTrackProgress.BCWS_Quantity = Funs.GetNewDecimalOrZero(txtvalue);
break;
}
}
PhtglContracttrackprogressService.UpdatePHTGL_ContractTrackProgress(modelContractTrackProgress);
2023-10-24 14:23:46 +08:00
}
2023-10-24 14:23:46 +08:00
}
2023-10-24 14:23:46 +08:00
}
}
CheckProgressd();
BindGrid();
}
/// <summary>
/// 修改产值/百分比
/// </summary>
private void CheckProgressd()
{
if (!string.IsNullOrEmpty(ContractId))
{
2023-10-24 14:23:46 +08:00
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
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
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;
2023-10-24 14:23:46 +08:00
}
if (buttonList.Contains(BLL.Const.BtnDelete))
{
// this.btnMenuDelete.Hidden = false;
2023-10-24 14:23:46 +08:00
}
}
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
2023-10-30 10:40:53 +08:00
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("进度检测表" + filename, System.Text.Encoding.UTF8) + ".xls");
2023-10-24 14:23:46 +08:00
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.Grid1.PageSize = 500;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
2023-10-30 10:40:53 +08:00
//private string GetGridTableHtml(Grid grid)
//{
// StringBuilder sb = new StringBuilder();
// sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
// sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// sb.Append("<tr>");
// foreach (GridColumn column in grid.Columns)
// {
// sb.AppendFormat("<td>{0}</td>", column.HeaderText);
// }
// sb.Append("</tr>");
// foreach (GridRow row in grid.Rows)
// {
// sb.Append("<tr>");
// 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("<td>{0}</td>", html);
// }
// sb.Append("</tr>");
// }
// sb.Append("</table>");
// return sb.ToString();
//}
2023-10-24 14:23:46 +08:00
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
2023-10-30 10:40:53 +08:00
MultiHeaderTable mht = new MultiHeaderTable();
mht.ResolveMultiHeaderTable(Grid1.Columns);
sb.Append("<meta http-equiv=\"Content-Type\" content=\"application/vnd.ms-excel;charset=utf-8\"/>");
2023-10-24 14:23:46 +08:00
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
2023-10-30 10:40:53 +08:00
foreach (List<object[]> rows in mht.MultiTable)
2023-10-24 14:23:46 +08:00
{
2023-10-30 10:40:53 +08:00
sb.Append("<tr>");
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("<th{0}{1}{2}>{3}</th>",
rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "",
colspan != 1 ? " colspan=\"" + colspan + "\"" : "",
colspan != 1 ? " style=\"text-align:center;\"" : "",
column.HeaderText);
}
sb.Append("</tr>");
2023-10-24 14:23:46 +08:00
}
2023-10-30 10:40:53 +08:00
2023-10-24 14:23:46 +08:00
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
2023-10-30 10:40:53 +08:00
foreach (GridColumn column in mht.Columns)
2023-10-24 14:23:46 +08:00
{
string html = row.Values[column.ColumnIndex].ToString();
2023-10-30 10:40:53 +08:00
2023-10-24 14:23:46 +08:00
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
2023-10-30 10:40:53 +08:00
else if (column.ColumnID == "tfGender")
{
html = (row.FindControl("labGender") as System.Web.UI.WebControls.Label).Text;
}
2023-10-24 14:23:46 +08:00
sb.AppendFormat("<td>{0}</td>", html);
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
2023-10-30 10:40:53 +08:00
2023-10-24 14:23:46 +08:00
}
}