如何:在OpenText Workflow 6.5模型中保存和读取多行数据
在Captaris Workflow 6.0和之前的版本中,保存多行數據似乎沒有被提及,因此大部分(包括我的團隊)都要自己建立(利用IDE的向導也算)數據庫來保存訂單項、物品列表、人員列表這樣的多行集合。這一切在6.5都已解決,流程開發者可以保存多行的事省下些腦細胞。不過從應用的情況來看,還是要費一些腦細胞的。下面用示例展示如何保存。
1.在設計流程時加入一個XML對象。
2.新增一行數據:
Teamplate.BLL.IModelXML oXml = this.Process.GetXmlObject("Common"); //”Common”是在前一步加入的XML對象名。
XmlDocument oDoc = new XmlDocument();
oDoc.LoadXml(oXml.XmlString);
XmlNode oE = oDoc.SelectSingleNode("Common/Form/Items");
//創建"Item"元素
XmlElement oEl = oDoc.CreateElement("Item");
//員工編號
oEl.SetAttribute("Code", this.drpEmployees.SelectedItem.Value);
//姓名
oEl.SetAttribute("Name", this.drpEmployees.SelectedItem.Text);
//補卡時間
DateTime time = DateTime.ParseExact(this.txtCheckDate.Text, "yyyy-MM-dd", null);
time = time.AddHours(int.Parse(this.txtCheckHour.Text));
time = time.AddMinutes(int.Parse(this.txtCheckMinute.Text));
oEl.SetAttribute("CheckTime", time.ToString("yyyy-MM-dd HH:mm"));
//原因
oEl.SetAttribute("Purpose", this.txtPurpose.Text);
//本月已補次數
oEl.SetAttribute("Times", this.txtTimes.Text);
//補卡類型
oEl.SetAttribute("CheckType", this.drpCheckType.SelectedItem.Text);
oE.AppendChild(oEl);
oXml.XmlString = oDoc.InnerXml;
oDoc = null;
//更新顯示申請人列表
//this.LoadCheckItems();
?
3.顯示列表數據:
XmlDocument oDoc = new XmlDocument();
oDoc.LoadXml(this.Process.GetXmlObject("Common").XmlString);
XmlNode nItems = oDoc.SelectSingleNode("Common/Form/Items");
string timesXml = nItems.OuterXml;
oDoc = null;
DataSet ds = new DataSet(“”);
Captaris.Workflow.Xml.DataSetXmlAdapter oA = new Captaris.Workflow.Xml.DataSetXmlAdapter(ds);
oA.ReadXml(xml);
//將數據集綁定到GridView
this.grdTimes.DataSource = ds;
this.grdTimes.DataBind();
4.移除一行:
private void RemoveCheckItem(int i)
{
??? Teamplate.BLL.IModelXML oXml = this.Process.GetXmlObject("Common");
??? XmlDocument oDoc = new XmlDocument();
??? oDoc.LoadXml(oXml.XmlString);
??? XmlNode nItems = oDoc.SelectSingleNode("Common/Form/Items");
??? string timesXml = nItems.OuterXml;
??? DataSet ds = new DataSet();
??? Captaris.Workflow.Xml.DataSetXmlAdapter oA = new Captaris.Workflow.Xml.DataSetXmlAdapter(ds);
??? oA.ReadXml(timesXml);
??? if (ds.Tables.Count < 1)
??? {
??????? ds = null;
??????? return;
??? }
??? ds.Tables[0].Rows[i].Delete();
??? ds.Tables[0].AcceptChanges();
??? //System.IO.StringWriter writer = new System.IO.StringWriter();
??? //ds.Tables[0].WriteXml(writer);
??? //nItems.InnerXml = writer.ToString();
??? nItems.InnerXml = "";
??? this.NewCheckItem(oDoc, ds.Tables[0]);
??? oXml.XmlString = oDoc.OuterXml;
??? //writer.Close();
??? oDoc = null;
}
我覺得上面的代碼太多了,為了節省您的腦細胞,我對XML操作封裝成一個類,可以在此下載它。
轉載于:https://www.cnblogs.com/Johnson/archive/2009/11/17/1604448.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的如何:在OpenText Workflow 6.5模型中保存和读取多行数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网规,考了,过了
- 下一篇: .net c# 序列化和反序列