有沒有辦法讓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