GenerateSheet.aspx.cs
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:15k
源码类别:

OA系统

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.HtmlControls;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.WebControls.WebParts;
  11. namespace OThinker.H3.Portal
  12. {
  13.     public partial class GenerateSheet : System.Web.UI.Page
  14.     {
  15.         protected void Page_Load(object sender, EventArgs e)
  16.         {
  17.             if (!this.IsPostBack)
  18.             {
  19.                 string[] packages = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowPackages();
  20.                 if (packages != null)
  21.                 {
  22.                     foreach (string package in packages)
  23.                     {
  24.                         this.lstWorkflowPackage.Items.Add(package);
  25.                     }
  26.                 }
  27.                 if (this.lstWorkflowPackage.Items.Count > 0)
  28.                 {
  29.                     this.lstWorkflowPackage.SelectedIndex = 0;
  30.                     this.lstWorkflowPackage_SelectedIndexChanged(this, new EventArgs());
  31.                 }
  32.             }
  33.         }
  34.         protected void lstWorkflowPackage_SelectedIndexChanged(object sender, EventArgs e)
  35.         {
  36.             string package = this.lstWorkflowPackage.SelectedValue;
  37.             string[] names = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowNames(package, OThinker.H3.WorkflowTemplate.WorkflowState.Unspecified);
  38.             this.lstWorkflowName.Items.Clear();
  39.             foreach (string name in names)
  40.             {
  41.                 this.lstWorkflowName.Items.Add(name);
  42.             }
  43.             if (this.lstWorkflowName.Items.Count > 0)
  44.             {
  45.                 this.lstWorkflowName.SelectedIndex = 0;
  46.                 this.lstWorkflowName_SelectedIndexChanged(this, new EventArgs());
  47.             }
  48.         }
  49.         protected void lstWorkflowName_SelectedIndexChanged(object sender, EventArgs e)
  50.         {
  51.             string package = this.lstWorkflowPackage.SelectedValue;
  52.             string name = this.lstWorkflowName.SelectedValue;
  53.             int[] versions = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowVersions(package, name);
  54.             this.lstWorkflowVersion.Items.Clear();
  55.             foreach (int version in versions)
  56.             {
  57.                 this.lstWorkflowVersion.Items.Add(version.ToString());
  58.             }
  59.             if (this.lstWorkflowVersion.Items.Count > 0)
  60.             {
  61.                 this.lstWorkflowVersion.SelectedIndex = this.lstWorkflowVersion.Items.Count - 1;
  62.             }
  63.         }
  64.         private void WriteCode(string FileName, string Code)
  65.         {
  66.             byte[] content = new byte[Code.Length];
  67.             for (int count = 0; count < content.Length; count++)
  68.             {
  69.                 content[count] = (byte)Code[count];
  70.             }
  71.             // 显示该文件
  72.             this.Response.ContentType = "text/plain";
  73.             //设置响应头和下载保存的文件名              
  74.             this.Response.AddHeader("Content-Disposition", "online;filename=" + FileName);
  75.             // 显示内容
  76.             this.Response.BinaryWrite(content);
  77.             this.Response.End();
  78.         }
  79.         protected void btnGenerateCs_Click(object sender, EventArgs e)
  80.         {
  81.             string code =
  82.                 @"
  83. using System;
  84. using System.Collections;
  85. using System.Configuration;
  86. using System.Data;
  87. using System.Web;
  88. using System.Web.Security;
  89. using System.Web.UI;
  90. using System.Web.UI.HtmlControls;
  91. using System.Web.UI.WebControls;
  92. using System.Web.UI.WebControls.WebParts;
  93. namespace " + this.txtNameSpace.Text + @"
  94. {
  95.     public partial class " + this.txtClassName.Text + @": OThinker.H3.WorkSheet.SheetPage
  96.     {
  97.         protected void Page_Load(object sender, EventArgs e)
  98.         {
  99.         }
  100.         public override void LoadDataFields()
  101.         {
  102.             // 在加载数据的时候调用
  103.             base.LoadDataFields();
  104.         }
  105.         public override void SaveDataFields(OThinker.H3.WorkSheet.SheetSubmitEventArgs Args)
  106.         {
  107.             // 在保存数据的时候调用
  108.             base.SaveDataFields(Args);
  109.         }
  110.     }
  111. }";
  112.             this.WriteCode(this.txtClassName.Text + ".aspx.cs", code);
  113.         }
  114.         protected void btnGenerateAspx_Click(object sender, EventArgs e)
  115.         {
  116.             H3.WorkflowTemplate.WorkflowTemplate workflow = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflow(
  117.                 this.lstWorkflowPackage.SelectedValue,
  118.                 this.lstWorkflowName.SelectedValue,
  119.                 int.Parse(this.lstWorkflowVersion.SelectedValue));
  120.             if (workflow == null)
  121.             {
  122.                 return;
  123.             }
  124.             System.Text.StringBuilder code = new System.Text.StringBuilder();
  125.             // 设置宽度为100%
  126.             code.Append("<TABLE WIDTH='100%' cellpadding=0 cellspacing=0>" + System.Environment.NewLine);
  127.             // 发起人
  128.             code.Append("<TR>" + System.Environment.NewLine);
  129.             code.Append("<TD>" + System.Environment.NewLine);
  130.             code.Append("Originator" + System.Environment.NewLine);
  131.             code.Append("</TD>" + System.Environment.NewLine);
  132.             code.Append("<TD>" + System.Environment.NewLine);
  133.             code.Append("<SheetControls:SheetLabel id="lblOriginator1" runat="server" DataField="" + OThinker.H3.Data.Keywords.OriginatorParser.Originators.FullName + "" />" + System.Environment.NewLine);
  134.             code.Append("</TD>" + System.Environment.NewLine);
  135.             code.Append("</TR>" + System.Environment.NewLine);
  136.             // 发起时间
  137.             code.Append("<TD>");
  138.             code.Append("Originate Time" + System.Environment.NewLine);
  139.             code.Append("</TD>" + System.Environment.NewLine);
  140.             code.Append("<TD>" + System.Environment.NewLine);
  141.             code.Append("<SheetControls:SheetLabel id="lblOriginateFullTime1" runat="server" DataField="" + OThinker.H3.Data.Keywords.InstanceParser.OriginateFullTime + "" />" + System.Environment.NewLine);
  142.             code.Append("</TD>" + System.Environment.NewLine);
  143.             code.Append("</TR>" + System.Environment.NewLine);
  144.             // 流水号
  145.             code.Append("<TD>" + System.Environment.NewLine);
  146.             code.Append("Sequence Number" + System.Environment.NewLine);
  147.             code.Append("</TD>");
  148.             code.Append("<TD>" + System.Environment.NewLine);
  149.             code.Append("<sheetcontrols:SheetSequenceID ID="SheetSequenceID1" runat="server" />" + System.Environment.NewLine);
  150.             code.Append("</TD>" + System.Environment.NewLine);
  151.             code.Append("</TR>" + System.Environment.NewLine);
  152.             
  153.             // 流程名
  154.             code.Append("<TD>" + System.Environment.NewLine);
  155.             code.Append("Instance Name" + System.Environment.NewLine);
  156.             code.Append("</TD>" + System.Environment.NewLine);
  157.             code.Append("<TD>" + System.Environment.NewLine);
  158.             code.Append("<sheetcontrols:SheetInstanceNameEditor ID="SheetInstanceNameEditor1" runat="server" />" + System.Environment.NewLine);
  159.             code.Append("</TD>" + System.Environment.NewLine);
  160.             code.Append("</TR>" + System.Environment.NewLine);
  161.             
  162.             // 流程优先级
  163.             code.Append("<TD>" + System.Environment.NewLine);
  164.             code.Append("Instance Priority" + System.Environment.NewLine);
  165.             code.Append("</TD>" + System.Environment.NewLine);
  166.             code.Append("<TD>" + System.Environment.NewLine);
  167.             code.Append("<sheetcontrols:SheetInstancePrioritySelector ID="SheetInstancePrioritySelector1" runat="server" />" + System.Environment.NewLine);
  168.             code.Append("</TD>" + System.Environment.NewLine);
  169.             code.Append("</TR>" + System.Environment.NewLine);
  170.             int count = 0;
  171.             foreach (OThinker.H3.Data.WorkflowDataItem processDataItem in workflow.DataItems)
  172.             {
  173.                 count++;
  174.                 string labelId = "Label" + count;
  175.                 string controlId = "Control" + count;
  176.                 code.Append("<TR>" + System.Environment.NewLine);
  177.                 // 名称单元
  178.                 code.Append("<TD valign='top' width='20%'>" + System.Environment.NewLine);
  179.                 code.Append("<SheetControls:SheetLabel ID="" + labelId + "" runat="server" BindType="OnlyVisibility" DataField="" + processDataItem.ItemName + "" Text="" + processDataItem.ItemName + "" RenderType="Normal" />" + System.Environment.NewLine);
  180.                 code.Append("</TD>" + System.Environment.NewLine);
  181.                 // 数据单元
  182.                 code.Append("<TD valign='top' width='80%'>" + System.Environment.NewLine);
  183.                 // 单元控件
  184.                 WebControl cellControl = null;
  185.                 switch (processDataItem.LogicType)
  186.                 {
  187.                     case OThinker.H3.Data.DataLogicType.Bool:
  188.                         code.Append("<SheetControls:SheetCheckBox ID="" + controlId + "" runat="server" DataField="" + processDataItem.ItemName + ""/>");
  189.                         break;
  190.                     case OThinker.H3.Data.DataLogicType.Sign:
  191.                         code.Append("<SheetControls:SheetSign ID="" + controlId + "" runat="server" DataField="" + processDataItem.ItemName + ""/>");
  192.                         break;
  193.                     case OThinker.H3.Data.DataLogicType.DateTime:
  194.                         code.Append("<SheetControls:SheetTime ID="" + controlId + "" runat="server" Modal="SimplifiedTime" DefaultValue="CurrentTime" DataField="" + processDataItem.ItemName + ""/>");
  195.                         break;
  196.                     case OThinker.H3.Data.DataLogicType.TimeSpan:
  197.                     case OThinker.H3.Data.DataLogicType.Double:
  198.                     case OThinker.H3.Data.DataLogicType.Money:
  199.                     case OThinker.H3.Data.DataLogicType.Int:
  200.                     case OThinker.H3.Data.DataLogicType.Long:
  201.                     case OThinker.H3.Data.DataLogicType.ShortString:
  202.                     case OThinker.H3.Data.DataLogicType.Byte:
  203.                     case OThinker.H3.Data.DataLogicType.Char:
  204.                         code.Append("<SheetControls:SheetTextBox ID="" + controlId + "" runat="server" DataField="" + processDataItem.ItemName + ""/>");
  205.                         break;
  206.                     case OThinker.H3.Data.DataLogicType.HyperLink:
  207.                         code.Append("<SheetControls:SheetEditableHyperlink ID="" + controlId + "" runat="server" DataField="" + processDataItem.ItemName + ""/>");
  208.                         break;
  209.                     case OThinker.H3.Data.DataLogicType.Discussion:
  210.                         code.Append("<SheetControls:SheetComment ID="" + controlId + "" " + 
  211.                             "runat="server" " + 
  212.                             "DataField="" + processDataItem.ItemName + "" " + 
  213.                             "ReadDataFields="" + processDataItem.ItemName + "" " + 
  214.                             "Height=180px Width = 300px " + 
  215.                             "/>");
  216.                         break;
  217.                     case OThinker.H3.Data.DataLogicType.Attachment:
  218.                         code.Append("<SheetControls:SheetAttachment ID="" + controlId + "" runat="server" DataField="" + processDataItem.ItemName + ""/>");
  219.                         break;
  220.                     case OThinker.H3.Data.DataLogicType.String:
  221.                         code.Append("<SheetControls:SheetTextBox ID="" + controlId + "" runat="server" DataField="" + processDataItem.ItemName + "" TextMode="MultiLine"/>");
  222.                         break;
  223.                     case OThinker.H3.Data.DataLogicType.DataTable:
  224.                         code.Append("<SheetControls:SheetGridView ID="" + controlId + "" runat="server" DataField="" + processDataItem.ItemName + ""/>");
  225.                         break;
  226.                     case OThinker.H3.Data.DataLogicType.SingleParticipant:
  227.                         code.Append("<SheetControls:SheetUserSelector ID="" + controlId + "" runat="server" DataField="" + processDataItem.ItemName + "" UserSelectable=true/>");
  228.                         break;
  229.                     case OThinker.H3.Data.DataLogicType.MultiParticipant:
  230.                         code.Append("<SheetControls:SheetUserSelector ID="" + controlId + "" runat="server" " + 
  231.                             "DataField="" + processDataItem.ItemName + "" " + 
  232.                             "Height="60px" " + 
  233.                             "UserSelectable=true " + 
  234.                             "CompanySelectable=true " +
  235.                             "OrgUnitSelectable=true " + 
  236.                             "GroupSelectable=true " + 
  237.                             "/>");
  238.                         break;
  239.                     case OThinker.H3.Data.DataLogicType.ByteArray:
  240.                         code.Append("未知控件");
  241.                         break;
  242.                     default:
  243.                         break;
  244.                 }
  245.                 code.Append(System.Environment.NewLine);
  246.                 code.Append("</TD>" + System.Environment.NewLine);
  247.                 code.Append("</TR>" + System.Environment.NewLine);
  248.             }
  249.             code.Append("</TABLE>" + System.Environment.NewLine);
  250.             
  251.             code.Insert(0,
  252.                 "<%@ Page Language="C#" AutoEventWireup="true" CodeFile="" + this.txtClassName.Text + ".aspx.cs" " + "Inherits="" + this.txtNameSpace.Text + "." + this.txtClassName.Text + "" EnableEventValidation="false"%>" + System.Environment.NewLine + 
  253.                 "<%@ Register assembly="OThinker.H3.WorkSheet" namespace="OThinker.H3.WorkSheet" tagprefix="SheetControls" %>" + System.Environment.NewLine + 
  254.                 "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">"+ System.Environment.NewLine + 
  255.                 "<html xmlns="http://www.w3.org/1999/xhtml">"+ System.Environment.NewLine + 
  256.                 "<head runat="server">"+ System.Environment.NewLine + 
  257.                 "<title>Untitled Page</title>"+ System.Environment.NewLine + 
  258.                 "</head>"+ System.Environment.NewLine + 
  259.                 "<body>"+ System.Environment.NewLine + 
  260.                 "<form id="form1" runat="server">"+ System.Environment.NewLine);
  261.             code.Append(
  262.                 "</form>" + System.Environment.NewLine + 
  263.                 "</body>" +  System.Environment.NewLine + 
  264.                 "</html>");
  265.             this.WriteCode(this.txtClassName.Text + ".aspx", code.ToString());
  266.         }
  267.     }
  268. }