Jak dynamicky načíst data ve formuláři aplikace InfoPath

Souhrn

Tento článek popisuje tři způsoby dynamicky načíst data formuláře Microsoft Office InfoPath. Můžete použít událost OnLoad , automatizovat InfoPath ExternalApplication objekt nebo vytvořit stránku ASP. Ukázky kódu jsou k dispozici.

ÚVOD

Tento článek popisuje, jak dynamicky načíst data ve formuláři aplikace InfoPath sady Office.

Další informace

Formuláře aplikace InfoPath je soubor XML. Soubor obsahuje data z formuláře a XML zpracování pokynů sdělit Průzkumníka Windows nebo Microsoft Internet Explorer, do které patří aplikace XML data.

Lze dynamicky načíst data do aplikace InfoPath pomocí jedné z následujících tří metod:
  • Použijte událost OnLoad .

    V události OnLoad můžete volat stránku ASP nebo jiného externího zdroje dat načíst data a zkopírujte jej do formuláře.
  • Automatizovat InfoPathExternalApplication objekt.

    Tato metoda vytvoří nový formulář, který je na základě dat z externího zdroje.
    Poznámka: Nastavení inicializovat a skriptovat ovládací prvky ActiveX nejsou označeny jako bezpečné v aplikaci Internet Explorer musí být nastavena na
    Dotázat se nebo Povolit pro tuto metodu pracovat.
    Data z externího zdroje musí být platný kód XML aplikace InfoPath.
  • Vytvořte stránku ASP.

    Stránky ASP vrací XML data ve správném formátu pro InfoPath otevřít jako soubor formuláře. XML data obsahuje odkaz na šablonu formuláře aplikace InfoPath kde je zobrazena data. Aplikace InfoPath může zobrazovat data bez problémů.

Vytvořit nový virtuální adresář

  1. Spusťte Správce Internetová informační služba.
  2. Rozbalte adresář webové servery ve stromovém zobrazení.
  3. Klepněte pravým tlačítkem myši na webu, kde chcete vytvořit nový virtuální adresář, přejděte na příkaz Novýa potom klepněte na tlačítko
    Virtuální adresář.
  4. Postupujte podle pokynů Průvodce vytvořením virtuálního adresáře a vytvořit nový virtuální adresář.

    Poznámka: Je nutné udělit oprávnění k zápisu do virtuálního adresáře.

Návrh formuláře aplikace InfoPath

Aplikace InfoPath 2007

  1. Spustíte aplikaci Infopath. V levém podokně klepněte na tlačítko Navrhnout šablonu formuláře.
  2. Ve skupinovém rámečku Navrhnout nový, klepněte na tlačítko Vybrat
    Možnost Šablona formuláře , klepnutím vyberte
    Prázdné možnost a potom klepněte na tlačítko OK.
  3. Ve skupinovém rámečku Navrhnout úkolyklepněte na tlačítko
    Ovládací prvky.
  4. Klepněte dvakrát na tlačítko Textové pole , chcete-li přidat dva ovládací prvky textové pole do formuláře.
  5. Uložte formulář.
  6. V nabídce soubor klepněte na tlačítko
    Publikovat.
  7. V Průvodci publikováním klepněte na tlačítko Další. Klepněte do umístění v sítia potom klepněte na tlačítko
    Další.
  8. Do pole cesta a název šablony formulářezadejte URL virtuálního adresáře, který jste vytvořili.
  9. Zadejte do pole název šablony formuláře
    twofield.xsn.

    Poznámka: Ujistěte se, že adresa URL podobná následující:
    http://myServer/myVirtualDirectory/twofield.xsn
  10. Klepněte na tlačítko Další, klepněte na tlačítko
    Publikovata klepněte na tlačítko Zavřít.
  11. Ukončete aplikaci InfoPath.

Aplikace InfoPath 2003

  1. Spustíte aplikaci Infopath. V levém podokně klepněte na tlačítko Navrhnout formulář.
  2. Ve skupinovém rámečku Navrhnout formulářklepněte na tlačítko Nový prázdný formulář.
  3. Ve skupinovém rámečku Navrhnout úkolyklepněte na tlačítko
    Ovládací prvky.
  4. Klepněte dvakrát na tlačítko Textové pole , chcete-li přidat dva ovládací prvky textové pole do formuláře.
  5. V nabídce soubor klepněte na tlačítko
    Publikovat.
  6. V Průvodci publikováním klepněte na tlačítko Další, klepněte na webový servera potom klepněte na tlačítko
    Další.
  7. V dialogovém okně Web URL a název souboru zadejte URL virtuálního adresáře, který jste vytvořili.
  8. Do pole název formuláře zadejte
    twofield.xsn.

    Poznámka: Ujistěte se, že adresa URL podobná následující:
    http://myServer/myVirtualDirectory/twofield.xsn
  9. Klepněte na tlačítko Další, klepněte na tlačítko Dokončita potom klepněte na tlačítko Zavřít.
  10. Ukončete aplikaci InfoPath.

Vytvořit stránku Default.asp

  1. Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte Poznámkový bloka potom klepněte na tlačítko
    OK.
  2. Vložte následující kód v programu Poznámkový blok.
    <%@ 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. Uložte soubor pod názvem Default.asp. Uložte soubor do virtuálního adresáře, který jste vytvořili v části "Vytvoření nového virtuálního adresáře".

Vytvořte stránku ASP dynamicky generovat formulář

  1. Vyhledejte a poklepejte na Twofield.xsn formulář, který jste publikovali.
    Poznámka: Otevření nového prázdného formuláře lze vyplnit.
  2. Klepněte na soubora potom klepněte na příkaz Uložit jako.
  3. Uložte soubor jako Form1.xml.
  4. Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte Poznámkový bloka potom klepněte na tlačítko
    OK.
  5. Vložte následující kód v programu Poznámkový blok.
    <%@ 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. V nabídce soubor klepněte na příkaz Uložit jako, do pole název souboru zadejte GetData.asp a klepněte na tlačítko Uložit.
  7. Spustíte druhou instanci programu Poznámkový blok.
  8. V nabídce soubor klepněte na tlačítko
    Otevřít, klepněte na tlačítko Form1.xmla potom klepněte na tlačítko
    Otevřít.
  9. Vyhledejte xmlns: obor názvů my prohlášení v Form1.xml a zkopírujte jeho hodnotu.

    Poznámka: Hodnota je podobná následující:
    http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26
  10. V GetData.asp soubor vyhledejte následující řádek:
    strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
  11. Nahraďte hodnotu proměnné strNamespacehodnotu zkopírovali v kroku 9.
  12. Klepněte na tlačítko Uložita ukončete Poznámkový blok.
  13. Zkopírujte soubor GetData.asp stejný virtuální adresář, kde je umístěn Twofield.xsn šablony formuláře.

Přidejte kód formuláře aplikace InfoPath automaticky načíst data ze stránky ASP

  1. Spustíte aplikaci InfoPath.
  2. V aplikaci InfoPath 2007 klepněte na tlačítko Navrhnout šablonu formuláře v levém podokně. V aplikaci InfoPath 2003 v levém podokně klepněte na tlačítko Navrhnout formulář .
  3. V aplikaci InfoPath 2007 klepněte V okně Tento počítač otevřete šablonu formuláře. V aplikaci InfoPath 2003 klepněte V okně Tento počítač otevřete formulář v návrhovém režimu v
    Podokno úloh Navrhnout formulář .
  4. Zadejte adresu URL šablony formuláře, který jste publikovali.

    Poznámka: Adresa URL je podobná následující:
    http://myServer/myVirtualDirectory/twofield.xsn
  5. V nabídce Nástroje klepněte na tlačítko
    Programovánía potom klepněte na tlačítko Události při načtení.
  6. Výchozí kód události OnLoad nahraďte následující kód.
    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. V nabídce soubor klepněte na tlačítko
    Uložita potom zavřete formulář aplikace InfoPath.

Testování formuláře aplikace InfoPath

Načtení dat pomocí události Při načtení

Událost OnLoad TwoField.xsn formuláře načte data z stránka GetData.asp, je-li žádná další data ve formuláři. Chcete-li načíst data, postupujte takto:
  1. Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte cestu ve formuláři a klepněte na tlačítko OK. Zadaná cesta podobná následující:
    http://myServer/IPDynamicData/TwoField.xsn
  2. Pokud se zobrazí výzva, klepněte na tlačítko
    Otevřít.
Všimněte si, že aplikace InfoPath spustí a TwoField.xsn formulář otevře. Obsahuje pole1, "test pole 5" a pole2 obsahuje "pole test 6". Jedná se o hodnoty GetData.asp vrátí při jeho dataRequest parametr nastaven na "3".

Načíst výchozí formulář pomocí ExternalApplication.New

Vytvoří stránku Default.asp klientský skript Chcete-li spustit aplikaci InfoPath ExternalApplication objekt automatizace a pak vytvořte nový formulář. Nový formulář je založen na data XML, která je vrácena GetData.asp. Chcete-li vytvořit nový formulář, klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte cestu na stránku Default.asp a klepněte na tlačítko OK. Zadaná cesta podobná následující:
http://myServer/IPDynamicData/default.asp
Poznámka: Chcete-li použít tuto metodu, musíte klepnout na výzvu nebo
Povolit pro nastavení inicializovat a skriptovat ovládací prvky ActiveX nejsou označeny jako bezpečné v aplikaci Internet Explorer.

Všimněte si, že aplikace InfoPath spustí a TwoField.xsn formulář otevře. Obsahuje pole1, "test pole 3" a pole2 obsahuje "pole test 4". Jedná se o hodnoty GetData.asp vrátí při jeho dataRequest parametr nastaven na "2".

Načíst existující formulář ze stránky ASP

Stránka GetData.asp vrátí XML ve správném formátu pro InfoPath otevřít jako soubor formuláře. Chcete-li to provést, klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte cestu stránka GetData.asp a klepněte na tlačítko OK. Zadaná cesta podobná následující:
http://myServer/IPDynamicData/getData.asp?dataRequest=1
Všimněte si, že aplikace InfoPath spustí a GetData.asp formulář otevře. Obsahuje pole1, "test pole 1" a pole2 obsahuje "pole test 2". Jedná se o hodnoty GetData.asp vrátí při jeho dataRequest parametr nastaven na "1".

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci bez žádné záruky výslovně uvedené nebo odvozené. To zahrnuje, ale není omezen pouze na předpokládané záruky obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předmětem ukázky a s nástroji, které slouží k vytvoření a ladění skriptu. Pracovníci podpory společnosti Microsoft mohou pomoci vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo vytvářet postupy podle vašich konkrétních požadavků.
Vlastnosti

ID článku: 896451 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Microsoft Office InfoPath 2007, Microsoft Office InfoPath 2003

Váš názor