程式 1
using System.Data;
using System.Data.SqlClient;
using Microsoft.Office;
using Word = Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.SmartTag;
...
public class CustomerOrder : ISmartDocument
{
public CustomerOrder()
{
}
...
}
程式 2
程式 3
程式 4
doc = new XmlDocument();
doc.Load(this.strSmartDocControlPlacePath);
xnm = new XmlNamespaceManager(doc.NameTable);
xnm.AddNamespace("sdc", "urn:JciStudio.Samples.Office2003.SmartDocument.SmartDocumentControlPlacement");
程式 5
// get XML namespace from definition file.
this.strNamespace = doc.SelectSingleNode("//sdc:SmartDocument", xnm)
.Attributes.GetNamedItem("namespace").InnerText;
// gererate Order Number.
// TODO: query database or enterprise application for order number rules.
iOrderID = Convert.ToInt32(rnd.Next() * 100000000);
if (iOrderID < 0)
iOrderID *= -1;
wdoc.SelectSingleNode("//ns:CustomerOrder/ns:OrderID",
"xmlns:ns='" + this.strNamespace + "'", false).Text = iOrderID.ToString();
// insert Order Date(default: date of generate this order).
wdoc.SelectSingleNode("//ns:CustomerOrder/ns:OrderDate",
"xmlns:ns='" + this.strNamespace + "'", false).Text = DateTime.Now.ToShortDateString();
程式 6
程式 7
switch (XMLTypeID)
{
case 1:
return this.strNamespace + "#CustomerOrder";
case 2:
return this.strNamespace + "#OrderID";
case 3:
return this.strNamespace + "#Customer";
case 4:
return this.strNamespace + "#Product";
default:
return null;
}
程式 9
switch (XMLTypeName)
{
case "urn:Samples.Office2003.SmartDocument.CustomerOrder#CustomerOrder":
return doc.SelectNodes("//sdc:ControlSection[@XmlMapping='']/sdc:Control", xnm).Count;
case "urn:Samples.Office2003.SmartDocument.CustomerOrder#OrderID":
return doc.SelectNodes("//sdc:ControlSection[@XmlMapping='OrderID']/sdc:Control", xnm).Count;
case "urn:Samples.Office2003.SmartDocument.CustomerOrder#Customer":
return doc.SelectNodes("//sdc:ControlSection[@XmlMapping='Customer']/sdc:Control", xnm).Count;
case "urn:Samples.Office2003.SmartDocument.CustomerOrder#Product":
return doc.SelectNodes("//sdc:ControlSection[@XmlMapping='Product']/sdc:Control", xnm).Count;
default:
return 0;
}
程式 10
// get control type from control ID.
strControlType = doc.SelectSingleNode("//sdc:Control[@ControlID='" + ControlID.ToString() + "']", xnm).Attributes.GetNamedItem("Type").InnerText;
// mapping control type.
switch (strControlType)
{
case "C_TYPE_ACTIVEX":
return C_TYPE.C_TYPE_ACTIVEX;
case "C_TYPE_BUTTON":
return C_TYPE.C_TYPE_BUTTON;
case "C_TYPE_CHECKBOX":
return C_TYPE.C_TYPE_CHECKBOX;
case "C_TYPE_COMBO":
return C_TYPE.C_TYPE_COMBO;
case "C_TYPE_LISTBOX":
return C_TYPE.C_TYPE_LISTBOX;
case "C_TYPE_RADIOGROUP":
return C_TYPE.C_TYPE_RADIOGROUP;
case "C_TYPE_TEXTBOX":
return C_TYPE.C_TYPE_TEXTBOX;
case "C_TYPE_DOCUMENTFRAGMENT":
return C_TYPE.C_TYPE_DOCUMENTFRAGMENT;
case "C_TYPE_DOCUMENTFRAGMENTURL":
return C_TYPE.C_TYPE_DOCUMENTFRAGMENTURL;
case "C_TYPE_HELP":
return C_TYPE.C_TYPE_HELP;
case "C_TYPE_HELPURL":
return C_TYPE.C_TYPE_HELPURL;
case "C_TYPE_LINK":
return C_TYPE.C_TYPE_LINK;
case "C_TYPE_IMAGE":
return C_TYPE.C_TYPE_IMAGE;
case "C_TYPE_SEPARATOR":
return C_TYPE.C_TYPE_SEPARATOR;
case "C_TYPE_LABEL":
return C_TYPE.C_TYPE_LABEL;
default:
return C_TYPE.C_TYPE_SEPARATOR;
}