527 lines
25 KiB
C#
527 lines
25 KiB
C#
using BLL;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
|
|
namespace FineUIPro.Web.JDGL.CostAnalysis
|
|
{
|
|
public partial class EarnedValueCurve : PageBase
|
|
{
|
|
#region 加载
|
|
/// <summary>
|
|
/// 加载页面
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (!IsPostBack)
|
|
{
|
|
BindChart();
|
|
InitTreeMenu();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 加载
|
|
/// <summary>
|
|
/// 树加载
|
|
/// </summary>
|
|
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;
|
|
//var project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId);
|
|
//if (project != null)
|
|
//{
|
|
// TreeNode rootNode = new TreeNode();
|
|
// rootNode.Text = project.ProjectName;
|
|
// rootNode.NodeID = project.ProjectId;
|
|
// rootNode.CommandName = "project";
|
|
// rootNode.EnableExpandEvent = true;
|
|
// this.trWBS.Nodes.Add(rootNode);
|
|
// if (BLL.Project_InstallationService.IsExitProjectInstallation(project.ProjectId))
|
|
// {
|
|
// TreeNode emptyNode = new TreeNode();
|
|
// emptyNode.Text = "";
|
|
// emptyNode.NodeID = "";
|
|
// rootNode.Nodes.Add(emptyNode);
|
|
// }
|
|
//}
|
|
Model.Project_Installation installation = BLL.Project_InstallationService.GetProjectInstallationByProjectId(this.CurrUser.LoginProjectId);
|
|
if (installation != null)
|
|
{
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = "[" + installation.InstallationCode + "]" + installation.InstallationName;
|
|
newNode.NodeID = installation.InstallationId;
|
|
newNode.CommandName = "installation";
|
|
newNode.EnableExpandEvent = true;
|
|
newNode.EnableClickEvent = true;
|
|
newNode.EnableCheckBox = false;
|
|
this.trWBS.Nodes.Add(newNode);
|
|
|
|
TreeNode emptyNode = new TreeNode();
|
|
emptyNode.Text = "";
|
|
emptyNode.NodeID = "";
|
|
newNode.Nodes.Add(emptyNode);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 树节点展开
|
|
/// <summary>
|
|
/// 树节点展开
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void trWBS_NodeExpand(object sender, TreeNodeEventArgs e)
|
|
{
|
|
e.Node.Nodes.Clear();
|
|
if (e.Node.CommandName == "project") //展开项目节点
|
|
{
|
|
var installations = from x in Funs.DB.Project_Installation
|
|
where x.ProjectId == e.Node.NodeID && x.SuperInstallationId == "0"
|
|
orderby x.InstallationCode
|
|
select x;
|
|
foreach (var installation in installations)
|
|
{
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = "[" + installation.InstallationCode + "]" + installation.InstallationName;
|
|
newNode.NodeID = installation.InstallationId;
|
|
newNode.CommandName = "installation";
|
|
newNode.EnableExpandEvent = true;
|
|
newNode.EnableClickEvent = true;
|
|
e.Node.Nodes.Add(newNode);
|
|
|
|
TreeNode emptyNode = new TreeNode();
|
|
emptyNode.Text = "";
|
|
emptyNode.NodeID = "";
|
|
newNode.Nodes.Add(emptyNode);
|
|
}
|
|
}
|
|
else if (e.Node.CommandName == "installation") //展开装置/单元节点
|
|
{
|
|
var installations = from x in Funs.DB.Project_Installation
|
|
where x.SuperInstallationId == e.Node.NodeID
|
|
orderby x.InstallationCode
|
|
select x;
|
|
if (installations.Count() > 0)
|
|
{
|
|
foreach (var installation in installations)
|
|
{
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = "[" + installation.InstallationCode + "]" + installation.InstallationName;
|
|
newNode.NodeID = installation.InstallationId;
|
|
newNode.CommandName = "installation";
|
|
newNode.EnableExpandEvent = true;
|
|
newNode.EnableClickEvent = true;
|
|
e.Node.Nodes.Add(newNode);
|
|
|
|
TreeNode emptyNode = new TreeNode();
|
|
emptyNode.Text = "";
|
|
emptyNode.NodeID = "";
|
|
newNode.Nodes.Add(emptyNode);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var cnProfessions = from x in Funs.DB.WBS_CnProfession where x.InstallationId == e.Node.NodeID && x.IsApprove == true orderby x.OldId select x;
|
|
if (cnProfessions.Count() > 0) //普通装置主项
|
|
{
|
|
foreach (var cnProfession in cnProfessions)
|
|
{
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = cnProfession.CnProfessionName;
|
|
newNode.NodeID = cnProfession.CnProfessionId;
|
|
newNode.CommandName = "cnProfession";
|
|
newNode.EnableExpandEvent = true;
|
|
newNode.EnableClickEvent = true;
|
|
e.Node.Nodes.Add(newNode);
|
|
TreeNode emptyNode = new TreeNode();
|
|
emptyNode.Text = "";
|
|
emptyNode.NodeID = "";
|
|
newNode.Nodes.Add(emptyNode);
|
|
}
|
|
}
|
|
else //总图
|
|
{
|
|
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.InstallationId == e.Node.NodeID && x.SuperUnitProjectId == null && x.IsApprove == true orderby x.SortIndex, x.UnitProjectCode select x;
|
|
foreach (var unitProject in unitProjects)
|
|
{
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = unitProject.UnitProjectName;
|
|
newNode.NodeID = unitProject.UnitProjectId;
|
|
newNode.CommandName = "unitProject";
|
|
newNode.EnableExpandEvent = true;
|
|
if (unitProject.IsApprove == true)
|
|
{
|
|
newNode.Checked = true;
|
|
}
|
|
else
|
|
{
|
|
newNode.Checked = false;
|
|
}
|
|
newNode.EnableClickEvent = true;
|
|
e.Node.Nodes.Add(newNode);
|
|
TreeNode emptyNode = new TreeNode();
|
|
emptyNode.Text = "";
|
|
emptyNode.NodeID = "";
|
|
newNode.Nodes.Add(emptyNode);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (e.Node.CommandName == "cnProfession") //展开专业节点
|
|
{
|
|
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == e.Node.NodeID && x.SuperUnitProjectId == null && x.IsApprove == true orderby x.SortIndex, x.UnitProjectCode select x;
|
|
foreach (var unitProject in unitProjects)
|
|
{
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = unitProject.UnitProjectName;
|
|
newNode.NodeID = unitProject.UnitProjectId;
|
|
newNode.CommandName = "unitProject";
|
|
newNode.EnableExpandEvent = true;
|
|
newNode.EnableCheckBox = true;
|
|
newNode.EnableCheckEvent = true;
|
|
if (unitProject.IsSelected == true && unitProject.IsApprove == null)
|
|
{
|
|
unitProject.IsApprove = true;
|
|
BLL.UnitProjectService.UpdateUnitProject(unitProject);
|
|
}
|
|
if (unitProject.IsApprove == true)
|
|
{
|
|
newNode.Checked = true;
|
|
}
|
|
else
|
|
{
|
|
newNode.Checked = false;
|
|
}
|
|
newNode.EnableClickEvent = true;
|
|
e.Node.Nodes.Add(newNode);
|
|
TreeNode emptyNode = new TreeNode();
|
|
emptyNode.Text = "";
|
|
emptyNode.NodeID = "";
|
|
newNode.Nodes.Add(emptyNode);
|
|
}
|
|
}
|
|
else if (e.Node.CommandName == "unitProject") //展开单位工程节点
|
|
{
|
|
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == e.Node.NodeID && x.SuperWbsSetId == null && x.IsApprove == true orderby x.WbsSetCode select x;
|
|
if (wbsSet1s.Count() > 0)
|
|
{
|
|
foreach (var wbsSet1 in wbsSet1s)
|
|
{
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = wbsSet1.WbsSetName;
|
|
newNode.NodeID = wbsSet1.WbsSetId;
|
|
newNode.CommandName = "wbsSet";
|
|
newNode.EnableExpandEvent = true;
|
|
newNode.EnableCheckBox = true;
|
|
newNode.EnableCheckEvent = true;
|
|
newNode.EnableClickEvent = true;
|
|
e.Node.Nodes.Add(newNode);
|
|
var wbsSets = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(wbsSet1.WbsSetId);
|
|
if (wbsSets.Count > 0)
|
|
{
|
|
TreeNode emptyNode = new TreeNode();
|
|
emptyNode.Text = "";
|
|
emptyNode.NodeID = "";
|
|
newNode.Nodes.Add(emptyNode);
|
|
}
|
|
//needAddTempNode = false;
|
|
//var wbsSets = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(wbsSet1.WbsSetId);
|
|
//foreach (var wbsSet in wbsSets)
|
|
//{
|
|
// var childWbsSets = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet.WbsSetId select x;
|
|
// if (childWbsSets.Count() > 0)
|
|
// {
|
|
// needAddTempNode = true;
|
|
// break;
|
|
// }
|
|
//}
|
|
//if (needAddTempNode)
|
|
//{
|
|
// TreeNode emptyNode = new TreeNode();
|
|
// emptyNode.Text = "";
|
|
// emptyNode.NodeID = "";
|
|
// newNode.Nodes.Add(emptyNode);
|
|
//}
|
|
}
|
|
}
|
|
}
|
|
else if (e.Node.CommandName == "wbsSet") //展开分部/子分部/分项/子分项工程节点
|
|
{
|
|
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(e.Node.NodeID);
|
|
foreach (var wbsSet in childWbsSets)
|
|
{
|
|
TreeNode newNode = new TreeNode();
|
|
newNode.Text = wbsSet.WbsSetName;
|
|
newNode.NodeID = wbsSet.WbsSetId;
|
|
newNode.CommandName = "wbsSet";
|
|
newNode.EnableExpandEvent = true;
|
|
newNode.EnableClickEvent = true;
|
|
e.Node.Nodes.Add(newNode);
|
|
var wbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsSet.WbsSetId);
|
|
if (wbsSets.Count > 0)
|
|
{
|
|
TreeNode emptyNode = new TreeNode();
|
|
emptyNode.Text = "";
|
|
emptyNode.NodeID = "";
|
|
newNode.Nodes.Add(emptyNode);
|
|
}
|
|
//needAddTempNode = false;
|
|
//var wbsSets = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(wbsSet.WbsSetId);
|
|
//foreach (var wbsSetc in wbsSets)
|
|
//{
|
|
// var childWbsSets1 = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSetc.WbsSetId select x;
|
|
// if (childWbsSets1.Count() > 0)
|
|
// {
|
|
// needAddTempNode = true;
|
|
// break;
|
|
// }
|
|
//}
|
|
//if (needAddTempNode)
|
|
//{
|
|
// TreeNode emptyNode = new TreeNode();
|
|
// emptyNode.Text = "";
|
|
// emptyNode.NodeID = "";
|
|
// newNode.Nodes.Add(emptyNode);
|
|
//}
|
|
}
|
|
}
|
|
BindChart();
|
|
}
|
|
#endregion
|
|
|
|
#region Tree点击事件
|
|
/// <summary>
|
|
/// Tree点击事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void trWBS_NodeCommand(object sender, TreeCommandEventArgs e)
|
|
{
|
|
BindChart();
|
|
}
|
|
#endregion
|
|
|
|
#region 数据绑定
|
|
/// <summary>
|
|
/// 数据绑定
|
|
/// </summary>
|
|
private void BindChart()
|
|
{
|
|
string id = this.trWBS.SelectedNodeID;
|
|
Model.WBS_CostControl costControl = BLL.CostControlService.GetCostControlByCostControlId(id);
|
|
if (costControl != null)
|
|
{
|
|
string strSql = "select distinct (cast(YEAR(Months) as varchar(4))+'.'+cast(MONTH(Months) as varchar(2))) as 月份,t.Months," +
|
|
"ThisRealCost as '本月已完工作实际费用-ACWP',ThisPlanCost as '本月已完工作预算费用-BCWP',ThisPlanValue as '本月计划工作预算费用-BCWS',TotalPlanValue as '累计计划工作预算费用-BCWS',TotalRealCost as '累计已完工作实际费用-ACWP',TotalPlanCost as '累计已完工作预算费用-BCWP' " +
|
|
"from dbo.View_WBS_CostControlDetail as t where CostControlId=@Id order by t.Months";
|
|
//string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01";
|
|
SqlParameter[] parameter = new SqlParameter[]
|
|
{
|
|
new SqlParameter("@Id",id),
|
|
//new SqlParameter("@Months",date),
|
|
};
|
|
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|
this.Grid1.DataSource = dt;
|
|
this.Grid1.DataBind();
|
|
decimal lastbcws = 0, bcws = 0, lastacwp = 0, acwp = 0, lastbcwp = 0, bcwp = 0;
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
dt.Rows[i]["本月已完工作实际费用-ACWP"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月已完工作实际费用-ACWP"].ToString()) / 10000;
|
|
dt.Rows[i]["本月已完工作预算费用-BCWP"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月已完工作预算费用-BCWP"].ToString()) / 10000;
|
|
dt.Rows[i]["本月计划工作预算费用-BCWS"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月计划工作预算费用-BCWS"].ToString()) / 10000;
|
|
bcws = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计计划工作预算费用-BCWS"].ToString());
|
|
acwp = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计已完工作实际费用-ACWP"].ToString());
|
|
bcwp = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计已完工作预算费用-BCWP"].ToString());
|
|
if (bcws == lastbcws)
|
|
{
|
|
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString())>DateTime.Now)
|
|
{
|
|
dt.Rows[i]["累计计划工作预算费用-BCWS"] = DBNull.Value;
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计计划工作预算费用-BCWS"] = bcws / 10000;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计计划工作预算费用-BCWS"] = bcws / 10000;
|
|
}
|
|
if (acwp == lastacwp)
|
|
{
|
|
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now)
|
|
{
|
|
dt.Rows[i]["累计已完工作实际费用-ACWP"] = DBNull.Value;
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计已完工作实际费用-ACWP"] = acwp / 10000;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计已完工作实际费用-ACWP"] = acwp / 10000;
|
|
}
|
|
if (bcwp == lastbcwp)
|
|
{
|
|
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now)
|
|
{
|
|
dt.Rows[i]["累计已完工作预算费用-BCWP"] = DBNull.Value;
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计已完工作预算费用-BCWP"] = bcwp / 10000;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计已完工作预算费用-BCWP"] = bcwp / 10000;
|
|
}
|
|
lastbcws = bcws;
|
|
lastacwp = acwp;
|
|
lastbcwp = bcwp;
|
|
}
|
|
this.ChartEV.CreateMaryChart(dt, 1020, 420, null);
|
|
}
|
|
else
|
|
{
|
|
string strSql = "select distinct (cast(YEAR(Months) as varchar(4))+'.'+cast(MONTH(Months) as varchar(2))) as 月份,t.Months," +
|
|
"ThisRealCost as '本月已完工作实际费用-ACWP',ThisPlanCost as '本月已完工作预算费用-BCWP',ThisPlanValue as '本月计划工作预算费用-BCWS',TotalPlanValue as '累计计划工作预算费用-BCWS',TotalRealCost as '累计已完工作实际费用-ACWP',TotalPlanCost as '累计已完工作预算费用-BCWP' " +
|
|
"from dbo.View_WBS_CostControlParentDetail as t where ParentId=@Id order by t.Months";
|
|
//string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01";
|
|
SqlParameter[] parameter = new SqlParameter[]
|
|
{
|
|
new SqlParameter("@Id",id),
|
|
//new SqlParameter("@Months",date),
|
|
};
|
|
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|
this.Grid1.DataSource = dt;
|
|
this.Grid1.DataBind();
|
|
decimal lastbcws = 0, bcws = 0, lastacwp = 0, acwp = 0, lastbcwp = 0, bcwp = 0;
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
dt.Rows[i]["本月已完工作实际费用-ACWP"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月已完工作实际费用-ACWP"].ToString()) / 10000;
|
|
dt.Rows[i]["本月已完工作预算费用-BCWP"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月已完工作预算费用-BCWP"].ToString()) / 10000;
|
|
dt.Rows[i]["本月计划工作预算费用-BCWS"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月计划工作预算费用-BCWS"].ToString()) / 10000;
|
|
bcws = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计计划工作预算费用-BCWS"].ToString());
|
|
acwp = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计已完工作实际费用-ACWP"].ToString());
|
|
bcwp = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计已完工作预算费用-BCWP"].ToString());
|
|
if (bcws == lastbcws)
|
|
{
|
|
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now)
|
|
{
|
|
dt.Rows[i]["累计计划工作预算费用-BCWS"] = DBNull.Value;
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计计划工作预算费用-BCWS"] = bcws / 10000;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计计划工作预算费用-BCWS"] = bcws / 10000;
|
|
}
|
|
if (acwp == lastacwp)
|
|
{
|
|
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now)
|
|
{
|
|
dt.Rows[i]["累计已完工作实际费用-ACWP"] = DBNull.Value;
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计已完工作实际费用-ACWP"] = acwp / 10000;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计已完工作实际费用-ACWP"] = acwp / 10000;
|
|
}
|
|
if (bcwp == lastbcwp)
|
|
{
|
|
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now)
|
|
{
|
|
dt.Rows[i]["累计已完工作预算费用-BCWP"] = DBNull.Value;
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计已完工作预算费用-BCWP"] = bcwp / 10000;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dt.Rows[i]["累计已完工作预算费用-BCWP"] = bcwp / 10000;
|
|
}
|
|
lastbcws = bcws;
|
|
lastacwp = acwp;
|
|
lastbcwp = bcwp;
|
|
}
|
|
this.ChartEV.CreateMaryChart(dt, 1020, 420, null);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 将DataTable行列转换
|
|
/// <summary>
|
|
/// 将DataTable行列转换
|
|
/// </summary>
|
|
/// <param name="src">要转换的DataTable</param>
|
|
/// <param name="columnHead">要作为Column的哪列</param>
|
|
/// <returns></returns>
|
|
private DataTable Col2Row(DataTable src, int columnHead)
|
|
{
|
|
DataTable result = new DataTable();
|
|
DataColumn myHead = src.Columns[columnHead];
|
|
result.Columns.Add(myHead.ColumnName);
|
|
FineUIPro.RenderField bf;
|
|
bf = new FineUIPro.RenderField();
|
|
bf.ColumnID = myHead.ColumnName;
|
|
bf.DataField = myHead.ColumnName;
|
|
bf.HeaderText = myHead.ColumnName;
|
|
Grid1.Columns.Add(bf);
|
|
for (int i = 0; i < src.Rows.Count; i++)
|
|
{
|
|
result.Columns.Add(src.Rows[i][myHead].ToString());
|
|
bf = new FineUIPro.RenderField();
|
|
bf.ColumnID = src.Rows[i][myHead].ToString();
|
|
bf.DataField = src.Rows[i][myHead].ToString();
|
|
bf.HeaderText = src.Rows[i][myHead].ToString();
|
|
Grid1.Columns.Add(bf);
|
|
}
|
|
Grid1.DataKeyNames = new string[] { "月份" };
|
|
foreach (DataColumn col in src.Columns)
|
|
{
|
|
if (col == myHead)
|
|
continue;
|
|
object[] newRow = new object[src.Rows.Count + 1];
|
|
newRow[0] = col.ColumnName;
|
|
for (int i = 0; i < src.Rows.Count; i++)
|
|
{
|
|
newRow[i + 1] = src.Rows[i][col];
|
|
}
|
|
result.Rows.Add(newRow);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private DataTable Col2Row(DataTable src, string columnHead)
|
|
{
|
|
for (int i = 0; i < src.Columns.Count; i++)
|
|
{
|
|
if (src.Columns[i].ColumnName.ToUpper() == columnHead.ToUpper())
|
|
return Col2Row(src, i);
|
|
}
|
|
return new DataTable();
|
|
}
|
|
#endregion
|
|
}
|
|
} |