using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
public partial class WorkOrder_ShowSkipRule : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//绑定数据
ViewState["CaseID"] = "0702091001";
BindFlowImage();
/*
if(Request.QueryString["CaseID"] != null)
{
ViewState["CaseID"] = Request.QueryString["CaseID"].ToString();
BindFlowImage();
}
* */
}
}
#region 绑定流程图
/// <summary>
/// 绑定流程图
/// </summary>
public void BindFlowImage()
{
DataTable dt = Base.BLL.WorkOrder.WorkOrder.GetWorkOrderBaseCaseID(ViewState["CaseID"].ToString());
Table tt = new Table();
tt.BorderWidth = 0;
tt.CellPadding = 0;
tt.CellSpacing = 0;
tt.Width = Unit.Percentage(100);
if (dt.Rows.Count > 0)
{
//添加标题栏
AddRow(tt, dt.Rows[0]["Case_ID"].ToString(), Color.Empty);
AddRow(tt, "<span lang='EN-US' style='font-size: 10.5pt; font-family: Wingdings'> </span>", Color.Empty);
for (int i = 0; i < dt.Rows.Count; i++)
{
TableRow tr = new TableRow();
TableCell tc = new TableCell();
Table Taborder = new Table();
TableRow trOrder = new TableRow();
TableCell tdOrder = new TableCell();
//Taborder.BorderWidth = 0;
//Taborder.CellPadding = 0;
//Taborder.CellSpacing = 0;
//Taborder.Width = Unit.Percentage(100);
tdOrder.HorizontalAlign = HorizontalAlign.Center;
tdOrder.VerticalAlign = VerticalAlign.Top;
//添加工单标题
AddRow(tt, "工单编号:" + dt.Rows[i]["WorkOrder_ID"].ToString(), Color.Empty);
//根据每个工单设计流程图
AddContentTable(tdOrder, dt.Rows[i]["CreatedBy"].ToString());
Label lblSpan = new Label();
lblSpan.Text = "↓";
tdOrder.Controls.Add(lblSpan);
AddStep(tdOrder, Convert.ToInt32(dt.Rows[i]["WorkOrder_ID"]), dt.Rows[i]["CreatedBy"].ToString());
trOrder.Cells.Add(tdOrder);
Taborder.Rows.Add(trOrder);
tc.Controls.Add(Taborder);
tr.Cells.Add(tdOrder);
tt.Rows.Add(tr);
//AddRow(tt, "<span lang='EN-US' style='font-size: 10.5pt; font-family: Wingdings'>∨</span>", Color.Empty);
//AddRow(tt, "<span lang='EN-US' style='font-size: 10.5pt; font-family: Wingdings'> </span>", Color.Empty);
}
//AddRow(tt, "<a href=javascript:self.close();>流程结束</a>", Color.Empty);
}
FlowPlaceHolder.Controls.Add(tt);
}
#endregion
#region 添加行标头信息
/// <summary>
/// 添加行标头信息
/// </summary>
/// <param name="tab"></param>
/// <param name="Label"></param>
/// <param name="BackColor"></param>
void AddRow(Table tab, string Label, Color BackColor)
{
TableRow tr = new TableRow();
TableCell td = new TableCell();
td.Text = Label;
td.HorizontalAlign = HorizontalAlign.Center;
td.BackColor = BackColor;
tr.Cells.Add(td);
tab.Rows.Add(tr);
}
#endregion
#region 添加底线
/// <summary>
/// 添加底线
/// </summary>
/// <param name="cellObj"></param>
/// <param name="PosLine"></param>
private void AddLineRow(TableCell cellObj,LinePostion PosLine)
{
Table lineTab = new Table();
TableRow lineTr = new TableRow();
TableCell lineTd1 = new TableCell();
TableCell lineTd2 = new TableCell();
lineTab.BorderWidth = 0;
lineTab.CellPadding = 0;
lineTab.CellSpacing = 0;
lineTab.Width = Unit.Percentage(100);
lineTab.Height = 1;
if (PosLine == LinePostion.All)
{
lineTd1.BackColor = Color.FromArgb(0, 0, 0);
lineTd1.Width = Unit.Percentage(50);
lineTd2.BackColor = Color.FromArgb(0, 0, 0);
lineTd2.Width = Unit.Percentage(50);
}
else if (PosLine == LinePostion.Left)
{
lineTd1.BackColor = Color.FromArgb(0, 0, 0);
lineTd1.Width = Unit.Percentage(50);
lineTd2.Width = Unit.Percentage(50);
}
else
{
lineTd1.Width = Unit.Percentage(50);
lineTd2.BackColor = Color.FromArgb(0, 0, 0);
lineTd2.Width = Unit.Percentage(50);
}
lineTr.Cells.Add(lineTd1);
lineTr.Cells.Add(lineTd2);
lineTab.Rows.Add(lineTr);
cellObj.Controls.Add(lineTab); //添加内容到表格中
}
#endregion
#region 添加内容Table
/// <summary>
/// 添加内容列
/// </summary>
/// <param name="TitleTab"></param>
private void AddContentTable(TableCell cellObj,string Content)
{
/*
* <table cellspacing=1 cellpadding=4>
<tr>
<td class=tdbottom style="border: 1 solid #000000 " align=center > <a href=>如若然</a> </td>
</tr>
</table>
* */
Table contentTab = new Table();
TableRow contentTr = new TableRow();
TableCell contentTd = new TableCell();
contentTab.CellSpacing = 1;
contentTab.CellPadding = 4;
contentTd.Style.Add("border", "1 solid #000000");
contentTd.HorizontalAlign = HorizontalAlign.Center;
contentTd.Text = Content;
contentTr.Cells.Add(contentTd);
contentTab.Rows.Add(contentTr);
cellObj.Controls.Add(contentTab); //添加到列中
}
#endregion
#region 添加步骤信息
/// <summary>
/// 添加步骤信息
/// </summary>
/// <param name="tab"></param>
/// <param name="dd"></param>
/// <param name="CreatedBy"></param>
void AddStep(TableCell ParentTDObj,int WorkOrder_ID, string CreatedBy)
{
Table tabObj = new Table();
tabObj.BorderWidth = 0;
tabObj.CellSpacing = 0;
tabObj.CellPadding = 0;
tabObj.Width = Unit.Percentage(100);
TableRow tr = new TableRow();
DataView tmpDV = CreateDataView(WorkOrder_ID);
tmpDV.RowFilter = "CreatedBy='" + CreatedBy + "' and HandleBy_ID<>'" + CreatedBy+"'";
int childCount = 0;
foreach (DataRowView drvItem in tmpDV)
{
try
{
TableCell cellObj = new TableCell();
cellObj.VerticalAlign = VerticalAlign.Top;
cellObj.HorizontalAlign = HorizontalAlign.Center;
if (tmpDV.Count >= 2) //个数大于2时,如果只有一条记录不需要底线
{
if (childCount == 0)
{
//表示左边有底线
AddLineRow(cellObj, LinePostion.Right);
}
else if (childCount == tmpDV.Count - 1)
{
//表示右边有底线
AddLineRow(cellObj, LinePostion.Left);
}
else
{
//两都都有底线
AddLineRow(cellObj, LinePostion.All);
}
}
Label lblSpan = new Label();
lblSpan.Text = "↓";
cellObj.Controls.Add(lblSpan);
AddContentTable(cellObj,drvItem["HandleBy_ID"].ToString());
tr.Cells.Add(cellObj);
tabObj.Rows.Add(tr);
childCount++;
AddStep(cellObj,WorkOrder_ID,drvItem["HandleBy_ID"].ToString()); //继续递归调用
}
catch { }
}
ParentTDObj.Controls.Add(tabObj);
tabObj = null;
}
#endregion
#region 获取数据
/// <summary>
/// 获取数据
/// </summary>
/// <returns></returns>
private DataView CreateDataView(int WorkOrder_ID)
{
DataView daView = Base.BLL.WorkOrder.WorkOrder_StepPath.GetStepPathBaseOrderID(WorkOrder_ID).DefaultView;
return daView;
}
#endregion
}
#region 枚举位置变量
/// <summary>
/// 枚举位置变量
/// </summary>
public enum LinePostion
{
/// <summary>
/// 左边
/// </summary>
Left,
/// <summary>
/// 右边
/// </summary>
Right,
/// <summary>
/// 两边都有
/// </summary>
All
}
#endregion
效果图如下:
|