有没有办法让XML呈现在XMLFormView中?我正在尝试为InfoPath表单创建一个“另存为PDF”按钮的自定义Web部件。我们的想法是将XML与表单的XSL结合起来,并将生成的HTML转换为PDF,然后将其作为弹出窗口呈现给用户。从XMLFormView提取XML
因为它是作为弹出窗口显示的,所以不能使用工作流程。
有没有办法让XML呈现在XMLFormView中?我正在尝试为InfoPath表单创建一个“另存为PDF”按钮的自定义Web部件。我们的想法是将XML与表单的XSL结合起来,并将生成的HTML转换为PDF,然后将其作为弹出窗口呈现给用户。从XMLFormView提取XML
因为它是作为弹出窗口显示的,所以不能使用工作流程。
我们最终使用XmlFormHostItem.NotifyHost
方法将HTML发送到按钮单击事件中的自定义Web部件,该事件使用Winnovative HTML转换为PDF转换器将HTML转换为PDF。
HTML生成从InfoPath中隐藏代码:此方法的
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。
这个属性给你基本的XML文件的URL。您可以阅读Stream阅读器来阅读这个XML。
据我所知,只有在表单中引用XML数据时才设置XmlLocation。如果您使用XslLocation(与我们一样),则XmlLocation为空。 – Eske 2011-08-18 13:03:29
看看我的CodePlex项目http://ip2html.codeplex.com/
它可以让你产生从给定的(InfoPath中)XML &(XMLFormView)XSLT HTML。
更好的方法是直接从自定义Web部件获取XML。不知道为什么我们不这样做,首先。随机缓慢,我想:) – Eske 2011-10-31 14:33:46