日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

如何在 InfoPath 2003 表单中动态加载数据

發布時間:2025/5/22 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 InfoPath 2003 表单中动态加载数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自微軟:http://support.microsoft.com/kb/896451/zh-cn

概要 簡介 更多信息 創建新的虛擬目錄 設計 Microsoft Office InfoPath 2003 表單 創建 Default.asp 網頁 創建可以動態生成表單的 ASP 頁 將代碼添加到 InfoPath 表單中,以便從 ASP 頁中自動加載數據 測試 InfoPath 表單 通過使用 OnLoad 事件 通過使用 ExternalApplication.New 加載默認表單 加載 ASP 頁中現有的表單

概要

本文描述了在 InfoPath 2003 表單中動態加載數據的三種方法。您可以使用 OnLoad 事件,自動創建 InfoPath ExternalApplication 對象,或者創建 ASP 頁。本文還提供了代碼示例。

簡介

本文描述如何在 Microsoft Office InfoPath 2003 表單中動態加載數據。

更多信息

InfoPath 表單是 XML 文件。此類文件包含表單中的數據,以及幫助 Microsoft Windows 資源管理器或 Microsoft Internet Explorer 識別這些 XML 數據所屬應用程序的 XML 處理指令。

您可以通過使用以下三種方法之一將數據動態加載到 InfoPath 中:
?使用 OnLoad 事件。

OnLoad 事件中,您可以調用 ASP 頁或其它的外部數據源來檢索數據并將其復制到表單中。
?自動創建 InfoPathExternalApplication 對象。

此方法將創建一個基于來源于外部的數據的新表單。 注意:要使用此方法,必須將 Internet Explorer 中的“對沒有標記為安全的 ActiveX 控件進行初始化和腳本運行”設置設為“提示”或“啟用”。 來源于外部的數據也必須是有效的 InfoPath XML。
?創建 ASP 頁。

ASP 頁會以正確的 InfoPath 格式返回 XML 數據,以便作為表單文件打開。這些 XML 數據包含一個引用,該引用指向將在其上顯示這些數據的 InfoPath 表單模板。 InfoPath 可以正確地顯示數據。

回到頂端

創建新的虛擬目錄

1.啟動 Microsoft Internet 信息服務管理器。
2.展開樹視圖中的“網站”目錄。
3.右鍵單擊您想要在其中創建新虛擬目錄的網站,指向“新建”,然后單擊“虛擬目錄”。
4.按照“虛擬目錄創建向導”中的步驟創建新的虛擬目錄。

注意:您必須將寫權限授予虛擬目錄。

回到頂端

設計 Microsoft Office InfoPath 2003 表單

1.啟動 InfoPath。在左窗格中,單擊“設計表單”。
2.在“設計表單”下,單擊“新建空白表單”。
3.在“設計任務”下,單擊“控件”。
4.單擊“文本框”兩次,將兩個文本框控件添加到表單中。
5.在“文件”菜單上,單擊“發布”。
6.在“發布向導”中,單擊“下一步”,單擊“到 Web 服務器”,然后單擊“下一步”。
7.在“Web URL 和文件名”框中,鍵入您所創建的虛擬目錄的 URL。
8.在“表單名稱”框中,鍵入 twofield.xsn。 注意:確保 URL 類似于以下形式:http://myServer/myVirtualDirectory/twofield.xsn。
9.單擊“下一步”,單擊“完成”,然后單擊“關閉”。
10.退出 InfoPath 2003。

回到頂端

創建 Default.asp 網頁

1.單擊“開始”,單擊“運行”,鍵入 notepad,然后單擊“確定”。
2.將下面的代碼粘貼到記事本中。 <%@ Language=VBScript %>

<%

dim serverName, hrefPath, fileNamePos, serverPath

serverName = Request.ServerVariables("SERVER_NAME")

hrefPath = Request.ServerVariables("PATH_INFO")

fileNamePos = InStr( 1, hrefPath, "/Default.asp", 1 )

hrefPath = Left(hrefPath, fileNamePos )

serverPath = "http://" + serverName + hrefPath

%>

<HTML>

<head>

<SCRIPT LANGUAGE=VBScript>

Sub ButtonClick()

Dim oInfoPathApp

set oInfoPathApp = CreateObject("InfoPath.ExternalApplication")

oInfoPathApp.New "<%=serverPath%>GetData.asp?dataRequest=2"

set oInfoPathApp = Nothing

window.close

End Sub

</SCRIPT>

</HEAD>

<BODY onload="ButtonClick">

</BODY>

</HTML>
3. 將該文件另存為 Default.asp,保存在“創建新的虛擬目錄”一節中創建的虛擬目錄中。

回到頂端

創建可以動態生成表單的 ASP 頁

1.查找然后雙擊您剛剛發布的表單 Twofield.xsn。 注意:此時將打開一個新的空白表單供您填寫。
2.單擊“文件”,然后單擊“另存為”。
3.將文件另存為 Form1.xml。
4.單擊“開始”,單擊“運行”,鍵入 notepad,然后單擊“確定”。
5.將下面的代碼粘貼到記事本中: <%@ Language=VBScript %>
<%
' Define the XML namespace for the form.
Dim strNamespace
strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"

'Calculate the path of this server directory.
dim serverName, hrefPath, fileNamePos, serverPath
serverName = Request.ServerVariables("SERVER_NAME")
hrefPath = Request.ServerVariables("PATH_INFO")
fileNamePos = InStr( 1, hrefPath, "/GetData.asp", 1 )
hrefPath = Left(hrefPath, fileNamePos )
serverPath = "http://" + serverName + hrefPath

' Set our return content type.
Response.ContentType = "text/xml"

'Create an XML document to return.
Dim oXML
Set oXML = Server.CreateObject("MSXML.DOMDocument")

'Create the XML header that all XML documents must have.
dim myPI1
set myPI1 = oXML.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")
oXML.insertBefore myPI1, oXML.childNodes.item(0)

'Create the mso-infopathSolution processing instruction that binds the XML from this page to the
'TwoField.xsn InfoPath form template.
dim myPI2
set myPI2 = oXML.createProcessingInstruction("mso-infoPathSolution", "solutionVersion=""1.0.0.1"" productVersion=""11.0.5531"" PIVersion=""1.0.0.0"" href=""" + serverPath + "TwoField.xsn""")
oXML.insertBefore myPI2, oXML.childNodes.item(1)

'Create the mso-application processing instruction that marks the XML from this page as an InfoPath form.
dim myPI3
set myPI3 = oXML.createProcessingInstruction("mso-application", "progid=""InfoPath.Document""")
oXML.insertBefore myPI3, oXML.childNodes.item(2)

'Generate the XML for the form.
dim myFields
set myFields = oXML.createNode( 1, "myFields", strNamespace )
oXML.appendChild myFields

dim field1
set field1 = oXML.createNode( 1, "field1", strNamespace )

dim field2
set field2 = oXML.createNode( 1, "field2", strNamespace )

dim requestedData
requestedData = Request("dataRequest")
Select Case requestedData
Case "1"
field1.text = "test field 1"
field2.text = "test field 2"
Case "2"
field1.text = "test field 3"
field2.text = "test field 4"
Case "3"
field1.text = "test field 5"
field2.text = "test field 6"
Case Else
field1.text = "test field 7"
field2.text = "test field 8"
end Select

myFields.appendChild field1
myFields.appendChild field2

'Return the XML to the client.
Response.Write oXML.XML
%>
6.在“文件”菜單上,單擊“另存為”,在“文件名”框中鍵入 GetData.asp,然后單擊“保存”。
7.再啟動一個記事本實例。
8. 在“文件”菜單上,單擊“打開”,單擊“Form1.xml”,然后單擊“打開”。
9.在 Form1.xml 中查找 xmlns:my namespace,然后復制其值。 注意:此值類似于“http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26”。
10.切換回包含 GetData.asp 的記事本會話,然后在 GetData.asp 中查找下面的行: strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
11.用您在步驟 9 中復制的值替換“strNamespace”變量的值。
12.單擊“保存”,然后退出記事本。
13.將 GetData.asp 復制到 Twofield.xsn 表單模板所在的虛擬目錄中。

回到頂端

將代碼添加到 InfoPath 表單中,以便從 ASP 頁中自動加載數據

1.啟動 InfoPath。
2.在左窗格中,單擊“設計表單”。
3.在“設計表單”任務窗格中,在“在設計模式中打開表單”下單擊“本機上的模板”。
4.鍵入您發布的表單模板的 URL。 注意:此 URL 類似于 http://myServer/myVirtualDirectory/twofield.xsn。
5.在“工具”菜單上,單擊“編程”,然后單擊“OnLoad 事件”。
6.用以下代碼替換默認的“OnLoad 事件”代碼: function XDocument::OnLoad(eventObj)
{
//Only load data if the fields are empty.
if (XDocument.DOM.selectSingleNode("/my:myFields/my:field1").text == "" )
{
//Work out the location of the data file based on the current install directory.
searchExpression = new RegExp( "TwoField.xsn", "ig" );
searchResults = XDocument.Solution.URI.match( searchExpression );
if (searchResults.length == 0)
return;

//Clear the "TwoField.xsn" part of the string.
var targetDirectory = XDocument.Solution.URI.slice(0, searchResults.index );

//Load the example data into and XML document.
var objExternalData = new ActiveXObject("MSXML2.DomDocument.5.0");
objExternalData.async = false;
objExternalData.validateOnParse = false;
objExternalData.load( targetDirectory + "getData.asp?dataRequest=3" );

//Set the SelectionNamespaces property so that we can search the example data.
var strSelectionNamespaces = XDocument.DOM.getProperty("SelectionNamespaces");
objExternalData.setProperty("SelectionNamespaces", strSelectionNamespaces );

//Find the root node in the example data and import it into the InfoPath document.
var objExternalXML = objExternalData.selectSingleNode("my:myFields");
var objReplacementXML = XDocument.DOM.importNode( objExternalXML, true );

//Find the original data in the form and replace it with the example data.
var objOriginalXML = XDocument.DOM.selectSingleNode("my:myFields");
XDocument.DOM.replaceChild( objReplacementXML, objOriginalXML );
}
}
7.在“文件”菜單上,單擊“保存”,然后關閉 InfoPath 2003 表單。

回到頂端

測試 InfoPath 表單

通過使用 OnLoad 事件

加載數據 如果表單中沒有其他數據,則 TwoField.xsn 表單 OnLoad 事件將從 GetData.asp 頁面中加載數據。要加載這些數據,請按照下列步驟操作:
1.依次單擊“開始”和“運行”,鍵入表單路徑,然后單擊“確定”。鍵入的路徑類似于以下網址: http://myServer/IPDynamicData/TwoField.xsn
2.按照提示,單擊“打開”。
注意,InfoPath 將啟動,并且 TwoField.xsn 表單將打開。Field1 包含“test field 5”,Field2 包含“test field 6”。在將其 dataRequest 參數設置為“3”時,GetData.asp 就會返回這些值。

通過使用 ExternalApplication.New 加載默認表單

Default.asp 頁會創建客戶端腳本來自動生成 ExternalApplication 對象,以便啟動 InfoPath 并創建一個新表單。新表單基于由 GetData.asp 返回的 XML 數據。要創建新表單,依次單擊“開始”、“運行”,鍵入 Default.asp 頁面的路徑,然后單擊“確定”。鍵入的路徑類似于以下網址: http://myServer/IPDynamicData/default.asp

注意:要使用此方法,必須在 Internet Explorer 中單擊“對沒有標記為安全的 ActiveX 控件進行初始化和腳本運行”設置的 “提示”或“啟用”。

注意,InfoPath 將啟動,并且 TwoField.xsn 表單將打開。Field1 包含“test field 3”,Field2 包含“test field 4”。在將其 dataRequest 參數設置為“2”時,GetData.asp 就會返回這些值。

加載 ASP 頁中現有的表單

GetData.asp 頁會以正確的格式返回 XML,以便 InfoPath 將其作為表單文件打開。為此,請依次單擊“開始”、“運行”,鍵入 GetData.asp 的路徑,然后單擊“確定”。鍵入的路徑類似于以下網址: http://myServer/IPDynamicData/getData.asp?dataRequest=1 注意,InfoPath 將啟動,并且 GetData.asp 將打開。Field1 包含“test field 1”, Field2 包含“test field 2”。在將其 dataRequest 參數設置為“1”時,GetData.asp 就會返回這些值。

Microsoft 提供的編程示例只用于說明目的,不附帶任何明示或默示的保證。這包括但不限于對適銷性或特定用途適用性的默示保證。本文假定您熟悉所演示的編程語言和用于 創建和調試過程的工具。Microsoft 的支持工程師可以幫助解釋某個特定過程的功能,但是他們不會修改這些示例以提供額外的功能或構建過程以滿足您的特殊需求。

回到頂端


這篇文章中的信息適用于:
?Microsoft Office InfoPath 2003
?Microsoft Office InfoPath 2003, Service Pack 1 (SP1)

回到頂端


Microsoft 和/或其各供應商對于為任何目的而在本服務器上發布的文件及有關圖形所含信息的適用性,不作任何聲明。 所有該等文件及有關圖形均"依樣"提供,而不帶任何性質的保證。Microsoft和/或其各供應商特此聲明,對所有與該等信息有關的保證和條件不負任何 責任,該等保證和條件包括關于適銷性、符合特定用途、所有權和非侵權的所有默示保證和條件。在任何情況下,在由于使用或運行本服務器上的信息所引起的或與 該等使用或運行有關的訴訟中,Microsoft和/或其各供應商就因喪失使用、數據或利潤所導致的任何特別的、

總結

以上是生活随笔為你收集整理的如何在 InfoPath 2003 表单中动态加载数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。