|
|
|
|
为了支持InfoPath 2007表单代码,我们提供了Proxy Object Model(POM)来封装InfoPath 2007和InfoJet Service对象模型的交集,这样表单代码可以在它们中运行。
提示:
InfoJet Service直接支持InfoPath 2003兼容表单代码,不需要为它们使用InfoJet POM。
详细请参考InfoJet Service 表单代码支持。
|
|
|
例如,我们现在有下面的表单代码:
public partial class FormCode
{
public void InternalStartup()
{
EventManager.XmlEvents["/my:myFields/my:field1"].Changed
+= new XmlChangedEventHandler(field1_Changed);
}
public void field1_Changed(object sender, XmlEventArgs e)
{
e.Site.InnerXml = e.Site.InnerXml.ToUpper();
}
}
因为InfoJet Service不能直接实例化"FormClass"类型,所以我们需要将事件处理代码移动到一个静态的公共方法"On_field1_Changed"中,
并将事件参数封装在InfoJetSoft.POM.XmlFormHostItemProxy中:
public void field1_Changed(object sender, XmlEventArgs e)
{
XmlFormProxy formProxy = new XmlFormProxy( this, sender, e );
On_field1_Changed( formProxy );
}
[System.ComponentModel.Description("InfoJet POM, EventType=Changed, MatchPath=/my:myFields/my:field1")]
public static void On_field1_Changed(XmlFormProxy formProxy)
{
formProxy.XmlEventSite.InnerXml = formProxy.XmlEventSite.InnerXml.ToUpper();
}
On_field1_Changed()上的DescriptionAttribute属性是必需的,这样InfoJet Service可以在表单事件触发时找到这个方法。
提示:
On_field1_Changed()必须是一个静态公共方法。
关于InfoJet POM使用的DescriptionAttribute属性的更多信息,请参考代码属性。
代理类型列出了"XmlFormProxy"支持的InfoPath object model API。
|
|