天天看點

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

InfoPath 的浏覽器表單不支援加載并顯示圖檔,當然在模闆中可以插入圖檔,但是如果想顯示資料庫的一幅圖檔,或是動态加載一張圖檔就無能為力了。

基實這個問題可以通過在浏覽器表單中使用: "格式文本框(Rich TextBox) + 托管代碼" 來解決,通過對格式式文框的innerHTML賦HTML标記,來插入一組标記進而來顯示圖檔,在插入HTML代碼時,必須要以如下内容開始:

以如下内容結束:

為幫助讀者同時了解托管代碼與格式文框的用法,本文做出如下講解:

1. 如何在啟用浏覽器功能的InfoPath 2007 的表單中添加托管代碼,建立模闆,并如何部署到SharePoint 伺服器中運作;

2. 在InfoPath From Services模闆(使用1個文本框,用來輸入圖檔的URL;1個格式文本框,用來顯示這個圖檔),添加代碼來動态顯示圖檔。

本文适合對InfoPath和SharePoint有着基礎認識的,并

基實這個問題可以通過在浏覽器表單中使用: "格式文本框(Rich TextBox) + 托管代碼" 來解決,通過對格式式文框的innerHTML賦HTML标記,來插入一組<img></img>标記進而來顯示圖檔,在插入HTML代碼時,必須要以如下内容開始:

<html xmlns=\"http://www.w3.org/1999/xhtml\"><div>

 以如下内容結束:

</div></html>

本文适合對InfoPath和SharePoint有着基礎認識的,并且有着C#語言開發功底的開發人員、IT技術人員。

  1. 配置InfoPath 啟用托管代碼:

    重新運作Office的"安裝程式",在安裝的時候,勾選Visual Studio Tools for Application 即VSTA -> 從本機運作,如下的圖示:

    如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔
    .
  2. 建立InfoPath 模闆:

    打開InfoPath 2007 ,選擇"設計模闆"然後建立一個空白的模闆,

    為了進行VSTA的托管代碼設計,必須在"工具"->"表單選項"如下2個地方進行設定:

    1) "相容性"頁籤中

    按下圖的設定"設計一個可在浏覽器或InfoPath中打開的表單模闆"

    如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔
    2) "安全和信任"頁籤中,設定"為此表單模闆簽名"
    如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔
  3. 設計表單模闆

    在模闆中添加1個"文本框"控件(輕按兩下命名為:TextBox)、1個"按鈕"(輕按兩下文本設定成"顯示")、1個"格式文本框"(重命名為:RichTextBox),

    如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔
    然後輕按兩下"顯示"按鈕,點選"編輯表單代碼",系統會自動打開按鈕的單擊事件,在事件方法的函數中我們寫上如下3行的代碼:

XPathNavigator navigatorMainDataSource = this.MainDataSource.CreateNavigator();

string stringRichTextBoxHTML = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><div><img src='"

+ navigatorMainDataSource.SelectSingleNode("/my:myFields/my:TextBox", this.NamespaceManager).Value

+ "' alt='test'></img></div></html>";

navigatorMainDataSource.SelectSingleNode("/my:myFields/my:RichTextBox", this.NamespaceManager).InnerXml = stringRichTextBoxHTML;

第1行:找到主資料源的XpathNavigator對象

第2行:從TextBox節點中讀取URL值,包裹上<img>标記,并且前後加上格式化文本框所必須的HTML标記。

第3行:把HTML标記,賦給"格式文本框"RichTextBox

4、生成模闆

在InfoPath中點選"檔案"->"釋出",如下圖設定釋出向導:

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

選擇釋出到SharePoint伺服器後,點選"下一步":

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

在文本框中輸入SharePoint網站的URL,然後點選下一步:

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

出現上面的提示,什麼也不要選,直接點選下一步,如果和上面的圖不一樣,請确認本文章的第2步,您有沒有漏掉什麼步驟;

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

在上面的圖中,選擇把模闆釋出到C:\ ,并且檔案名為"顯示圖檔",然後一路點選"下一步",直到關閉釋出向導。

 5、釋出模闆到SharePoint伺服器管理中心

打開SharePoint網站的"管理中心", 在"應用程式管理"頁面"InfoPath Forms Services "節,選擇上載表單模闆

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

點選浏覽,并點選頁中的"上載",上傳第4步生成的"C:\顯示圖檔.xsn"檔案到管理中心;

如果頁面提示:

該表單模闆已被成功上載到場。若要在網站集中啟用該表單模闆,請從網站集中的"管理表單模闆"頁或功能激活頁來激活該表單模闆。

就表示模闆及代碼沒有任何問題。

然後,打開"管理表單模闆",在這裡可以看到我們上傳的模闆,這時點選激活到網站集,選擇我們要使用模闆的網站集,然後點确定.

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

6、在InfoPath表單庫中,加入該模闆

我們打開第5步中(我們把模闆激活到的)那個網站,這裡我們是http://oss ,然後在網站中選擇一個InfoPath表單庫,

如果沒有,您可以建立一個,但必須設定并保證在表單庫的"進階設定"中如下2個的選項是打開的:

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

然後在該表單庫的設定頁面,點選如下圖的連結"從現有網站内容類型添加":

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

然後系統會将上傳的模闆在内容類型"Microsoft Office InfoPath"裡,列出來,如下圖把"顯示圖檔"這個模闆添加進去,然後點确定:

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

這樣就完成了把模闆添加進入表單庫的任務!

7、使用模闆

在表單庫中,點選"建立"會顯示如下圖的"顯示圖檔"模闆

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

打開後,我們把部落格園LOGO的位址URL複制進去,點選"顯示",看看是不是很神奇!

如何在啟用SharePoint浏覽器功能的InfoPath 表單中添加托管代碼以動态地加載并顯示圖檔

 文章總結:

VSTA托管代碼在INFOPATH領域好比是手足之關系,本文介紹了應用代碼必須設定的選項和詳細步驟,本文的所有代碼和方法也适用于InfoPath 2010,對于格式化文本框,通過VSTA的托管代碼可以完成非常多的功能,以補充INFOPATH不足,除了可以顯示圖檔以外,我們可以幾乎在其中插入任何HTML代碼,比如<a>的超鍊代碼,比如<p>段落,比如<table>的表格,本文僅用若幹行代碼抛磚引玉,希望開發者自行思考,擴充InfoPath更多的特性。

繼續閱讀