Files
CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/ProjectData/MasterProjectDataAnalysis.aspx.cs
T
2026-07-20 15:43:27 +08:00

754 lines
30 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using BLL;
using Model;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.ProjectData
{
public partial class MasterProjectDataAnalysis : PageBase
{
/// <summary>
/// 集团在建主数据
/// </summary>
public static List<Model.Ads_pms_pro_info_build> masterProDatas = new List<Model.Ads_pms_pro_info_build>();
///// <summary>
///// QHSE施工中项目集合
///// </summary>
//public static List<Model.Base_Project> getProjects = new List<Model.Base_Project>();
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//获取集团在建主数据
masterProDatas = ProjectService.GetMasterProjectDataInfos();
////获取QHSE施工中项目集合
//getProjects = ProjectService.GetProjectWorkList();
TabStrip1_TabIndexChanged(null, null);
}
}
/// <summary>
/// 页签切换事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
{
if (TabStrip1.ActiveTabIndex == 0)
{
this.Panel1.Title = "已上线项目";
this.BindGrid();
}
else if (TabStrip1.ActiveTabIndex == 1)
{
this.Panel1.Title = "未上线项目";
this.BindGrid2();
}
else if (TabStrip1.ActiveTabIndex == 2)
{
this.Panel1.Title = "申请关闭项目";
this.BindGrid3();
}
else if (TabStrip1.ActiveTabIndex == 3)
{
this.Panel1.Title = "数据汇总";
this.BindGrid9();
}
//else if (TabStrip1.ActiveTabIndex == 3)
//{
// this.Panel1.Title = "预立项";
// this.BindGrid4();
//}
//else if (TabStrip1.ActiveTabIndex == 4)
//{
// this.Panel1.Title = "自建";
// //this.BindGrid5();
//}
}
#endregion
/// <summary>
/// 合同额(亿)
/// </summary>
/// <param name="Ori_amt">合同含税金额原始存档(元)</param>
/// <param name="Amt_add">增补合同本币含税金额(元)</param>
/// <returns></returns>
protected string ConvertAmount(decimal? Ori_amt, decimal? Amt_add)
{
string result = string.Empty;
Ori_amt = Ori_amt == null ? 0 : Ori_amt;
Amt_add = Amt_add == null ? 0 : Amt_add;
decimal? all = Amt_add + Ori_amt;
if (all != null)
{
double amount = all == null ? 0 : (Math.Round((double)(all / 100000000m), 2));
result = amount.ToString();
}
return result;
}
#region 线
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
var list = new List<MasterProjectDataInfo>();
var db = Funs.DB;
var query = (from x in masterProDatas
join pro in db.Base_Project on x.Pro_id equals pro.MasterSysId into proGroup
from pro in proGroup.DefaultIfEmpty()
//join use in db.Project_MasterDataUsage on x.Pro_id equals use.Pro_id into useGroup
//from use in useGroup.DefaultIfEmpty()
where pro != null && pro.MasterSysId != null
//&& pro.ProjectState == Const.ProjectState_1
select new MasterProjectDataInfo
{
//Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}|{(use != null ? use.Id : "")}",
Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}",
Pro_id = x.Pro_id,
Pro_Classify = "已关联",
Pro_name = x.Pro_name,
Pro_code = x.Pro_code,
Start_date = x.Start_date,
Con_mode_desc = x.Con_mode_desc,
Pro_nature = x.Pro_nature,
Pro_status = x.Pro_status,
Org_name = x.Org_name,
Amount = ConvertAmount(x.Ori_amt_sum_vat_fc, x.Amt_add_sum_vat_fc_local),
ProjectId = pro != null ? pro.ProjectId : null,
ProjectName = pro != null ? pro.ProjectName : "",
ProjectCode = pro != null ? pro.ProjectCode : "",
StartDate = pro != null ? pro.StartDate : null,
ProjectState = pro != null ? pro.ProjectState : "",
Relate = pro != null && pro.MasterSysId != null ? 1 : 2,
RelateName = pro != null && pro.MasterSysId != null ? "已关联" : "未关联",
}).ToList();
query = query.OrderByDescending(x => x.StartDate).ToList();
list.AddRange(query);
var projects = ProjectService.GetProjectWorkList();
var listYulixiang = (from x in projects
where x.MasterSysId == null
select new MasterProjectDataInfo
{
Pid = x.ProjectId,
ProjectId = x.ProjectId,
Pro_Classify = "待关联",
ProjectName = x.ProjectName,
ProjectCode = x.ProjectCode,
StartDate = x.StartDate,
ProjectState = x.ProjectState,
}).ToList();
listYulixiang = listYulixiang.OrderByDescending(x => x.StartDate).ToList();
list.AddRange(listYulixiang);
string startDate = this.txtStartTime.Text.Trim();
string endDate = this.txtEndTime.Text.Trim();
if (!string.IsNullOrWhiteSpace(startDate))
{
list = list.Where(x => Funs.GetNewDateTime(x.Start_date) >= Funs.GetNewDateTime(startDate)).ToList();
}
if (!string.IsNullOrWhiteSpace(endDate))
{
list = list.Where(x => Funs.GetNewDateTime(x.Start_date) <= Funs.GetNewDateTime(endDate)).ToList();
}
string proName = this.txtProName.Text.Trim();
string proCode = this.txtProCode.Text.Trim();
string projectName = this.txtProjectName.Text.Trim();
string projectCode = this.txtProjectCode.Text.Trim();
//int relate = int.Parse(this.rblIsRelate.SelectedValue);
if (!string.IsNullOrEmpty(proName))
{
list = list.Where(x => x.Pro_name.Contains(proName)).ToList();
}
if (!string.IsNullOrEmpty(proCode))
{
list = list.Where(x => x.Pro_code.Contains(proCode)).ToList();
}
if (!string.IsNullOrEmpty(projectName))
{
list = list.Where(x => x.ProjectName.Contains(projectName)).ToList();
}
if (!string.IsNullOrEmpty(projectCode))
{
list = list.Where(x => x.ProjectCode.Contains(projectCode)).ToList();
}
//if (relate > 0)
//{
// list = list.Where(x => x.Relate == relate).ToList();
//}
int yiGuanLianNum = list.Where(x => x.Pro_Classify == "已关联").Count();
int yuLiXiangNum = list.Where(x => x.Pro_Classify == "待关联").Count();
DataTable tb = Funs.LINQToDataTable(list);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
int totalNum = list.Count();
JObject summary = new JObject();
summary.Add("tfNumber", "合计");
summary.Add("Pro_Classify", totalNum);
summary.Add("Pro_name", $"已关联:{yiGuanLianNum};待关联:{yuLiXiangNum}");
Grid1.SummaryData = summary;
}
/// <summary>
/// 项目状态
/// </summary>
/// <param name="addType"></param>
/// <returns></returns>
protected string ConvertProjectState(object state)
{
string result = string.Empty;
string stateStr = state.ToString();
if (state != null && !string.IsNullOrWhiteSpace(stateStr))
{
result = stateStr == "2" ? "暂停中" : stateStr == "3" ? "已完工" : "施工中";
}
return result;
}
#endregion
#region Grid
protected void TextBox_TextChanged(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.BindGrid();
}
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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 = this.Grid1.RecordCount;
this.BindGrid();
Response.Write(GetGridMultiHeaderTableHtml2(Grid1));
//Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
#endregion
#endregion
#region 线线
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid2()
{
var list = new List<MasterProjectDataInfo>();
var db = Funs.DB;
var query = (from x in masterProDatas
join pro in db.Base_Project on x.Pro_id equals pro.MasterSysId into proGroup
from pro in proGroup.DefaultIfEmpty()
join use in db.Project_MasterDataUsage on x.Pro_id equals use.Pro_id into useGroup
from use in useGroup.DefaultIfEmpty()
where pro == null && (use == null || (use != null && (use.ReasonType == null || use.ReasonType == "停缓建" || use.ReasonType == "条件受限")))
select new MasterProjectDataInfo
{
//Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}|{(use != null ? use.Id : "")}",
//Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}",
Pid = x.Pro_id,
Pro_id = x.Pro_id,
Pro_Classify = (use == null || (use != null && (use.ReasonType == null))) ? "待上线" : use.ReasonType,
Pro_name = x.Pro_name,
Pro_code = x.Pro_code,
Start_date = x.Start_date,
Con_mode_desc = x.Con_mode_desc,
Pro_nature = x.Pro_nature,
Pro_status = x.Pro_status,
Org_name = x.Org_name,
Amount = ConvertAmount(x.Ori_amt_sum_vat_fc, x.Amt_add_sum_vat_fc_local),
ReasonType = use != null ? use.ReasonType : "",
Reason = use != null ? use.Reason : "",
}).ToList();
string startDate = this.txtStartTime2.Text.Trim();
string endDate = this.txtEndTime2.Text.Trim();
if (!string.IsNullOrWhiteSpace(startDate))
{
query = query.Where(x => Funs.GetNewDateTime(x.Start_date) >= Funs.GetNewDateTime(startDate)).ToList();
}
if (!string.IsNullOrWhiteSpace(endDate))
{
query = query.Where(x => Funs.GetNewDateTime(x.Start_date) <= Funs.GetNewDateTime(endDate)).ToList();
}
query = query.OrderByDescending(x => x.StartDate).ToList();
list.AddRange(query);
string proName = this.txtProName2.Text.Trim();
string proCode = this.txtProCode2.Text.Trim();
if (!string.IsNullOrEmpty(proName))
{
list = list.Where(x => x.Pro_name.Contains(proName)).ToList();
}
if (!string.IsNullOrEmpty(proCode))
{
list = list.Where(x => x.Pro_code.Contains(proCode)).ToList();
}
DataTable tb = Funs.LINQToDataTable(list);
Grid2.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid2, tb);
Grid2.DataSource = table;
Grid2.DataBind();
int totalNum = list.Count();
int daiShangXianNum = list.Where(x => x.Pro_Classify == "待上线").Count();
int tingHuanJianNum = list.Where(x => x.Pro_Classify == "停缓建").Count();
int tiaoJianShouXianNum = list.Where(x => x.Pro_Classify == "条件受限").Count();
JObject summary = new JObject();
summary.Add("tfPageIndex", "合计");
summary.Add("Pro_Classify", totalNum);
summary.Add("Pro_name", $"待上线:{daiShangXianNum};停缓建:{tingHuanJianNum};条件受限:{tiaoJianShouXianNum}");
Grid2.SummaryData = summary;
}
#endregion
#region Grid
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
this.BindGrid2();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid2_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid2();
}
protected void Grid2_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid2();
}
#endregion
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut2_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.Grid2.PageSize = this.Grid2.RecordCount;
this.BindGrid2();
Response.Write(GetGridMultiHeaderTableHtml2(Grid2));
//Response.Write(GetGridTableHtml(Grid2));
Response.End();
}
#endregion
#endregion
#region
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid3()
{
var list = new List<MasterProjectDataInfo>();
var db = Funs.DB;
var query = (from x in masterProDatas
join pro in db.Base_Project on x.Pro_id equals pro.MasterSysId into proGroup
from pro in proGroup.DefaultIfEmpty()
join use in db.Project_MasterDataUsage on x.Pro_id equals use.Pro_id into useGroup
from use in useGroup.DefaultIfEmpty()
where pro == null && use != null && use.Is_use == false && use.ReasonType != null && use.ReasonType != "停缓建" && use.ReasonType != "条件受限"
select new MasterProjectDataInfo
{
//Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}|{(use != null ? use.Id : "")}",
//Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}",
Pid = x.Pro_id,
Pro_id = x.Pro_id,
//Pro_Classify = use != null ? (use.ReasonType == "已完工/撤场" ? "已完工/撤场" : use.ReasonType == "停缓建" ? "停缓建" : use.ReasonType == "不适用" ? "不适用" : "条件受限") : "",
Pro_Classify = use != null ? use.ReasonType : "",
Pro_name = x.Pro_name,
Pro_code = x.Pro_code,
Start_date = x.Start_date,
Con_mode_desc = x.Con_mode_desc,
Pro_nature = x.Pro_nature,
Pro_status = x.Pro_status,
Org_name = x.Org_name,
Amount = ConvertAmount(x.Ori_amt_sum_vat_fc, x.Amt_add_sum_vat_fc_local),
ReasonType = use != null ? use.ReasonType : "",
Reason = use != null ? use.Reason : "",
}).ToList();
string startDate = this.txtStartTime3.Text.Trim();
string endDate = this.txtEndTime3.Text.Trim();
if (!string.IsNullOrWhiteSpace(startDate))
{
query = query.Where(x => Funs.GetNewDateTime(x.Start_date) >= Funs.GetNewDateTime(startDate)).ToList();
}
if (!string.IsNullOrWhiteSpace(endDate))
{
query = query.Where(x => Funs.GetNewDateTime(x.Start_date) <= Funs.GetNewDateTime(endDate)).ToList();
}
//query = query.OrderByDescending(x => x.StartDate).ToList();
list.AddRange(query);
string proName = this.txtProName3.Text.Trim();
string proCode = this.txtProCode3.Text.Trim();
if (!string.IsNullOrEmpty(proName))
{
list = list.Where(x => x.Pro_name.Contains(proName)).ToList();
}
if (!string.IsNullOrEmpty(proCode))
{
list = list.Where(x => x.Pro_code.Contains(proCode)).ToList();
}
DataTable tb = Funs.LINQToDataTable(list);
Grid3.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid3, tb);
Grid3.DataSource = table;
Grid3.DataBind();
int totalNum = list.Count();
int yiWanGongNum = list.Where(x => x.Pro_Classify == "已完工/撤场").Count();
int buShiYong = list.Where(x => x.Pro_Classify == "不适用").Count();
JObject summary = new JObject();
summary.Add("tfPageNo", "合计");
summary.Add("Pro_Classify", totalNum);
summary.Add("Pro_name", $"已完工/撤场:{yiWanGongNum};不适用:{buShiYong}");
Grid3.SummaryData = summary;
}
#endregion
#region Grid
protected void TextBox3_TextChanged(object sender, EventArgs e)
{
this.BindGrid3();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid3_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid3();
}
protected void Grid3_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid3();
}
#endregion
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut3_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.Grid3.PageSize = this.Grid3.RecordCount;
this.BindGrid3();
Response.Write(GetGridMultiHeaderTableHtml2(Grid3));
//Response.Write(GetGridTableHtml(Grid3));
Response.End();
}
#endregion
#endregion
#region
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid9()
{
var db = Funs.DB;
var list = (from x in db.View_Project_MasterDataAnalysis
orderby x.ReportDate descending
select x).ToList().Take(30);
string startDate = this.txtStartTime9.Text.Trim();
string endDate = this.txtEndTime9.Text.Trim();
if (!string.IsNullOrWhiteSpace(startDate))
{
list = list.Where(x => x.ReportDate >= Funs.GetNewDateTime(startDate)).ToList();
}
if (!string.IsNullOrWhiteSpace(endDate))
{
list = list.Where(x => x.ReportDate <= Funs.GetNewDateTime(endDate)).ToList();
}
DataTable tb = Funs.LINQToDataTable(list);
Grid9.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid9, tb);
Grid9.DataSource = table;
Grid9.DataBind();
}
#endregion
#region Grid
protected void TextBox9_TextChanged(object sender, EventArgs e)
{
this.BindGrid9();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid9_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid9();
}
protected void Grid9_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid9();
}
#endregion
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut9_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.Grid9.PageSize = this.Grid9.RecordCount;
this.BindGrid9();
Response.Write(GetGridMultiHeaderTableHtml2(Grid9));
//Response.Write(GetGridTableHtml(Grid9));
Response.End();
}
#endregion
#region
/// <summary>
/// 汇总上报
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnReport_Click(object sender, EventArgs e)
{
var reportList = ProjectMasterDataAnalysisService.GetRecentHourAnalysisReportList();
if (reportList.Any())
{
Alert.ShowInTop("近一小时内已汇总上报,请勿频繁上报!", MessageBoxIcon.Warning);
return;
}
else
{
string message = string.Empty;
string code = ProjectMasterDataAnalysisService.ReportProjectMasterDataAnalysis(this.CurrUser.UserName, ref message);
if (code == "1")
{
this.BindGrid9();
ShowNotify(message, MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
return;
}
else
{
Alert.ShowInParent(message, MessageBoxIcon.Error);
}
}
}
#endregion
#endregion
#region
/// <summary>
/// 多表头导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
public string GetGridMultiHeaderTableHtml2(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;\">");
MultiHeaderTable mht = new MultiHeaderTable();
mht.ResolveMultiHeaderTable(grid.Columns);
foreach (List<object[]> rows in mht.MultiTable)
{
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;
if (column.Hidden == false)
{
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>");
}
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
//if (row.Grid.gr.Hidden == false) {
foreach (GridColumn column in mht.Columns)
{
if (column.ColumnID != "ckbIsSelected" && column.ColumnID != "Punish" && column.ColumnID != "Del")
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfPageIndex")
{
html = (row.FindControl("lblPageIndex") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfPageNo")
{
html = (row.FindControl("lblPageNo") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfPageNum")
{
html = (row.FindControl("lblPageNum") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfNum")
{
html = (row.FindControl("lblNum") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfState")
{
html = (row.FindControl("lblState") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfProState")
{
html = (row.FindControl("lblProState") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfStatus")
{
html = (row.FindControl("lblStatus") as AspNet.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
//}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
}
}