从XMLFormView中提取XML

时间:2011-08-17 11:18:02

标签: c# asp.net sharepoint web-parts infopath

有没有办法让XML呈现在XMLFormView中?我正在尝试使用InfoPath表单的“另存为PDF”按钮创建自定义Web部件。我们的想法是将XML与表单的XSL结合起来,并将生成的HTML转换为PDF,然后将其作为弹出窗口呈现给用户。

因为它是一个弹出窗口,所以不能使用工作流程。

3 个答案:

答案 0 :(得分:0)

http://msdn.microsoft.com/en-us/library/microsoft.office.infopath.server.controls.xmlformview.xmllocation.aspx

此属性将为您提供基本XML文件的Url。您可以阅读Stream阅读器来阅读此XML。

答案 1 :(得分:0)

查看我的codeplex项目http://ip2html.codeplex.com/

它允许您从给定(InfoPath)XML& XML生成HTML。 (XMLFormView)XSLT。

答案 2 :(得分:0)

我们最终使用XmlFormHostItem.NotifyHost方法将HTML发送到按钮单击事件中的自定义Web部件,该事件使用Winnovative HTML转换为PDF转换为PDF。

从InfoPath代码隐藏生成HTML:

var formData = new XmlDocument();
var xslt = new XslCompiledTransform(true);

// Load the form data 
formData.LoadXml(MainDataSource.CreateNavigator().InnerXml);
// Extract the stylesheet from the package
xslt.Load(ExtractFromPackage("Print.xsl")); // (uses Template.OpenFileFromPackage(string fileName) to get xsl)

// Perform XSL-transformation
// [...]

// Send HTML to web part
this.NotifyHost(formData.InnerXml);

此方法的一个缺点是NotifyHost事件仅在每个表单中触发一次,因此如果用户单击“另存为PDF”然后取消,则必须重新加载表单才能保存为PDF。