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

OA系统

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Web;
  7. using System.Web.SessionState;
  8. using System.Web.UI;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.HtmlControls;
  11. namespace OThinker.H3.Portal
  12. {
  13.     /// <summary>
  14.     /// Summary description for QueryCaseByData.
  15.     /// </summary>
  16.     public partial class QueryInstanceByData : PortalPage
  17.     {
  18.         private string UserID
  19.         {
  20.             get
  21.             {
  22.                 string id = this.Request.QueryString[Param_UserID];
  23.                 if (id == null || id == "")
  24.                 {
  25.                     return null;
  26.                 }
  27.                 else
  28.                 {
  29.                     return id;
  30.                 }
  31.             }
  32.         }
  33.         protected void Page_Load(object sender, System.EventArgs e)
  34.         {
  35.             if (!this.IsPostBack)
  36.             {
  37.                 // 验证是否具有管理员权限
  38.                 if ((!this.UserValidator.ValidateViewReport()) && this.UserID != this.UserValidator.UserID)
  39.                 {
  40.                     this.NotifyMessage(LackOfAuth);
  41.                 }
  42.                 // 工作流模板的包
  43.                 string[] packages = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowPackages();
  44.                 if (packages != null)
  45.                 {
  46.                     foreach (string package in packages)
  47.                     {
  48.                         this.lstWorkflowPackage.Items.Add(package);
  49.                     }
  50.                 }
  51.                 this.lstWorkflowPackage_SelectedIndexChanged(this, new EventArgs());
  52.                 string[] comparisonTypes = new string[] { ">", ">=", "=", "<=", "<", "!=", "为空", "非空", "包含"};
  53.                 foreach (string type in comparisonTypes)
  54.                 {
  55.                     this.lstOperator.Items.Add(type);
  56.                 }
  57.             }
  58.         }
  59.         #region Web Form Designer generated code
  60.         override protected void OnInit(EventArgs e)
  61.         {
  62.             //
  63.             // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  64.             //
  65.             InitializeComponent();
  66.             base.OnInit(e);
  67.         }
  68.         /// <summary>
  69.         /// Required method for Designer support - do not modify
  70.         /// the contents of this method with the code editor.
  71.         /// </summary>
  72.         private void InitializeComponent()
  73.         {
  74.             this.btnQuery.Click += new System.Web.UI.ImageClickEventHandler(this.btnQuery_Click);
  75.         }
  76.         #endregion
  77.         protected void lstWorkflowPackage_SelectedIndexChanged(object sender, EventArgs e)
  78.         {
  79.             this.lstWorkflowName.Items.Clear();
  80.             if (this.lstWorkflowPackage.SelectedItem != null)
  81.             {
  82.                 string selectedPackage = this.lstWorkflowPackage.SelectedItem.Value;
  83.                 if (selectedPackage != null && selectedPackage != "")
  84.                 {
  85.                     string[] names = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowNames(selectedPackage, OThinker.H3.WorkflowTemplate.WorkflowState.Active);
  86.                     if (names != null && names.Length != 0)
  87.                     {
  88.                         foreach (string name in names)
  89.                         {
  90.                             this.lstWorkflowName.Items.Add(name);
  91.                         }
  92.                         this.lstWorkflowName_SelectedIndexChanged(this, new EventArgs());
  93.                     }
  94.                 }
  95.             }
  96.         }
  97.         protected void lstWorkflowName_SelectedIndexChanged(object sender, EventArgs e)
  98.         {
  99.             this.lstWorkflowVersion.Items.Clear();
  100.             if (this.lstWorkflowName.SelectedItem != null)
  101.             {
  102.                 string selectedPackage = this.lstWorkflowPackage.SelectedItem.Value;
  103.                 string selectedName = this.lstWorkflowName.SelectedItem.Value;
  104.                 if (selectedName != null && selectedName != "")
  105.                 {
  106.                     int[] versions = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowVersions(selectedPackage, selectedName);
  107.                     if (versions != null && versions.Length != 0)
  108.                     {
  109.                         foreach (int version in versions)
  110.                         {
  111.                             this.lstWorkflowVersion.Items.Add(version.ToString());
  112.                         }
  113.                         this.lstWorkflowVersion.SelectedIndex = this.lstWorkflowVersion.Items.Count - 1;
  114.                         this.lstWorkflowVersion_SelectedIndexChanged(this, new EventArgs());
  115.                     }
  116.                 }
  117.             }
  118.         }
  119.         protected void lstWorkflowVersion_SelectedIndexChanged(object sender, EventArgs e)
  120.         {
  121.             this.lstDataItem.Items.Clear();
  122.             if (this.lstWorkflowVersion.SelectedItem != null && this.lstWorkflowVersion.SelectedItem.Value != null && this.lstWorkflowVersion.SelectedItem.Value != "")
  123.             {
  124.                 string package = this.lstWorkflowPackage.SelectedItem.Value;
  125.                 string name = this.lstWorkflowName.SelectedItem.Value;
  126.                 int version = int.Parse(this.lstWorkflowVersion.SelectedItem.Value);
  127.                 OThinker.H3.WorkflowTemplate.WorkflowTemplate template = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflow(package, name, version);
  128.                 if (template == null || template.DataItems == null || template.DataItems.Length == 0)
  129.                 {
  130.                     return;
  131.                 }
  132.                 foreach (OThinker.H3.Data.WorkflowDataItem item in template.DataItems)
  133.                 {
  134.                     if (item != null && item.ItemName != null && item.ItemName != "")
  135.                     {
  136.                         this.lstDataItem.Items.Add(item.ItemName);
  137.                     }
  138.                 }
  139.                 this.lstDataItem_SelectedIndexChanged(this, new EventArgs());
  140.             }
  141.         }
  142.         protected void lstDataItem_SelectedIndexChanged(object sender, EventArgs e)
  143.         {
  144.             string package = this.lstWorkflowPackage.SelectedItem.Value;
  145.             string name = this.lstWorkflowName.SelectedItem.Value;
  146.             int version = int.Parse(this.lstWorkflowVersion.SelectedItem.Value);
  147.             string itemName = this.lstDataItem.SelectedItem.Value;
  148.             if (itemName == null || itemName == "")
  149.             {
  150.                 this.lblText.Text = "类型";
  151.             }
  152.             else
  153.             {
  154.                 OThinker.H3.WorkflowTemplate.WorkflowTemplate template = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflow(package, name, version);
  155.                 Data.WorkflowDataItem item = template.GetDataItem(itemName);
  156.                 this.lblText.Text = item.LogicTypeName;
  157.             }
  158.         }
  159.         private void btnQuery_Click(object sender, System.Web.UI.ImageClickEventArgs e)
  160.         {
  161.             this.Query();
  162.         }
  163.         protected void lnkQuery_Click(object sender, System.EventArgs e)
  164.         {
  165.             this.Query();
  166.         }
  167.         private void Query()
  168.         {
  169.             if (this.lstDataItem.SelectedItem == null || this.lstDataItem.SelectedItem.Value == null || this.lstDataItem.SelectedItem.Value == "")
  170.             {
  171.                 this.NotifyMessage("没有选定数据项");
  172.             }
  173.             if ((this.lstOperator.SelectedItem.Value != "为空" && 
  174.                 this.lstOperator.SelectedItem.Value != "非空") && 
  175.                 (this.txtValue.Text == null || this.txtValue.Text == ""))
  176.             {
  177.                 this.NotifyMessage("请输入数据的值");
  178.             }
  179.             string package = this.lstWorkflowPackage.SelectedItem.Value;
  180.             string name = this.lstWorkflowName.SelectedItem.Value;
  181.             int version = int.Parse(this.lstWorkflowVersion.SelectedItem.Value);
  182.             string itemName = this.lstDataItem.SelectedItem.Value;
  183.             string comparison = this.lstOperator.SelectedItem.Value;
  184.             string dataComparison = null;
  185.             if (this.lstOperator.SelectedItem.Value == "为空")
  186.             {
  187.                 dataComparison = "is null";
  188.             }
  189.             else if (this.lstOperator.SelectedItem.Value == "非空")
  190.             {
  191.                 dataComparison = "is not null";
  192.             }
  193.             else if (this.lstOperator.SelectedItem.Value == "包含")
  194.             {
  195.                 dataComparison = "LIKE '%" + this.txtValue.Text.Replace("'", "''") + "%'";
  196.             }
  197.             else
  198.             {
  199.                 dataComparison = comparison + "'" + this.txtValue.Text.Replace("'", "''") + "'";
  200.             }
  201.             try
  202.             {
  203.                 System.Data.DataTable table = Portal.Query.QueryInstanceByData(
  204.                     package, 
  205.                     name, 
  206.                     version, 
  207.                     itemName,
  208.                     dataComparison, 
  209.                     this.UserID);
  210.                 this.InstanceGridView.BindDataGrid(table);
  211.             }
  212.             catch
  213.             {
  214.                 this.NotifyMessage("非法的查询方式");
  215.             }
  216.         }
  217. }
  218. }