Τρόπος φόρτωσης δυναμικά δεδομένα σε μια φόρμα του InfoPath

Σύνοψη

Αυτό το άρθρο περιγράφει τρεις τρόπους για να φορτώσετε δυναμικά δεδομένα σε μια φόρμα του Microsoft Office InfoPath. Μπορείτε να χρησιμοποιήσετε το συμβάν OnLoad , να αυτοματοποιήσετε το InfoPath ExternalApplication αντικείμενο ή να δημιουργήσετε μια σελίδα ASP. Παρέχονται δείγματα κώδικα.

ΕΙΣΑΓΩΓΗ

Αυτό το άρθρο περιγράφει τον τρόπο δυναμική φόρτωση δεδομένων σε μια φόρμα του InfoPath του Office.

Περισσότερες πληροφορίες

Μια φόρμα του InfoPath είναι ένα αρχείο XML. Το αρχείο περιέχει τα δεδομένα από τη φόρμα και XML που επεξεργάζεται οδηγίες που σας ενημερώνουν την Εξερεύνηση των Windows ή του Microsoft Internet Explorer, στην οποία ανήκει η εφαρμογή των δεδομένων XML.

Δυναμικά, μπορείτε να φορτώσετε δεδομένα στο InfoPath, χρησιμοποιώντας μία από τις τρεις παρακάτω μεθόδους:
  • Χρησιμοποιήστε το συμβάν OnLoad .

    Στο συμβάν OnLoad , μπορείτε να καλέσετε μια σελίδα ASP ή άλλη εξωτερική προέλευση δεδομένων για να ανακτήσετε τα δεδομένα και για να το αντιγράψετε στη φόρμα.
  • Αυτοματοποίηση του αντικειμένου InfoPathExternalApplication .

    Αυτή η μέθοδος δημιουργεί μια νέα φόρμα που βασίζεται σε τα δεδομένα από μια εξωτερική προέλευση.
    Σημείωση Πρέπει να καθοριστεί η Προετοιμασία και εκτέλεση στοιχείων ελέγχου ActiveX που δεν έχουν χαρακτηριστεί ως ασφαλή ρύθμιση στον Internet Explorer
    Ερώτηση ή να ενεργοποιήσετε για αυτήν τη μέθοδο για να εργαστείτε.
    Τα δεδομένα από την εξωτερική προέλευση πρέπει να είναι έγκυρη XML του InfoPath.
  • Δημιουργήστε μια σελίδα ASP.

    Η σελίδα ASP επιστρέφει δεδομένα XML με τη σωστή μορφή για να ανοίξει ως αρχείο φόρμας InfoPath. Τα δεδομένα XML που περιέχει μια αναφορά στο πρότυπο φόρμας του InfoPath, όπου εμφανίζονται τα δεδομένα. Το InfoPath μπορεί να εμφανίσει τα δεδομένα χωρίς πρόβλημα.

Δημιουργήστε ένα νέο εικονικό κατάλογο

  1. Ξεκινήστε τη Διαχείριση υπηρεσιών πληροφοριών Internet της Microsoft.
  2. Αναπτύξτε τον κατάλογο τοποθεσιών Web στην προβολή δέντρου.
  3. Κάντε δεξιό κλικ στην τοποθεσία Web όπου θέλετε να δημιουργήσετε τον νέο εικονικό κατάλογο, επιλέξτε Δημιουργίακαι, στη συνέχεια, κάντε κλικ στο κουμπί
    Ο εικονικός κατάλογος.
  4. Ακολουθήστε τα βήματα στον Εικονικό κατάλογο "Οδηγός δημιουργίας" για να δημιουργήσετε έναν νέο εικονικό κατάλογο.

    Σημείωση Πρέπει να εκχωρήσετε δικαιώματα εγγραφής στον εικονικό κατάλογο.

Σχεδίαση μιας φόρμας του InfoPath

Το InfoPath 2007

  1. Εκκίνηση του Infopath. Στο αριστερό τμήμα του παραθύρου, κάντε κλικ στο κουμπί Σχεδίαση ενός προτύπου φόρμας.
  2. Στην περιοχή Σχεδίαση νέου, κάντε κλικ για να επιλέξετε το
    Επιλογή Προτύπου φόρμας , κάντε κλικ για να επιλέξετε το
    Κενή επιλογή και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
  3. Στην ενότητα Εργασίες σχεδίασης, κάντε κλικ στο κουμπί
    Τα στοιχεία ελέγχου.
  4. Κάντε κλικ στο Πλαίσιο κειμένου δύο φορές για να προσθέσετε δύο στοιχεία ελέγχου πλαισίου κειμένου στη φόρμα.
  5. Αποθηκεύστε τη φόρμα.
  6. Στο μενού αρχείο , κάντε κλικ στο κουμπί
    Δημοσίευση.
  7. Στον "Οδηγό δημοσίευσης", κάντε κλικ στο κουμπί " Επόμενο". Κάντε κλικ σε μια θέση δικτύουκαι, στη συνέχεια, κάντε κλικ στο κουμπί
    Επόμενο.
  8. Στο πλαίσιο όνομα διαδρομής και το αρχείο του προτύπου φόρμας, πληκτρολογήστε τη διεύθυνση URL του εικονικού καταλόγου που δημιουργήσατε.
  9. Στο πλαίσιο όνομα του προτύπου φόρμας , πληκτρολογήστε
    twofield.xsn.

    Σημείωση Βεβαιωθείτε ότι η διεύθυνση URL μοιάζει με το ακόλουθο:
    http://myServer/myVirtualDirectory/twofield.xsn
  10. Κάντε κλικ στο κουμπί επόμενη, κάντε κλικ στο κουμπί
    Δημοσίευση, και στη συνέχεια κάντε κλικ στο κουμπί Κλείσιμο.
  11. Πραγματοποιήστε έξοδο από το InfoPath.

Το InfoPath 2003

  1. Εκκίνηση του Infopath. Στο αριστερό τμήμα του παραθύρου, κάντε κλικ στο κουμπί Σχεδίαση φόρμας.
  2. Στο πλαίσιο Σχεδίαση φόρμας, κάντε κλικ στο κουμπί Δημιουργία κενής φόρμας.
  3. Στην ενότητα Εργασίες σχεδίασης, κάντε κλικ στο κουμπί
    Τα στοιχεία ελέγχου.
  4. Κάντε κλικ στο Πλαίσιο κειμένου δύο φορές για να προσθέσετε δύο στοιχεία ελέγχου πλαισίου κειμένου στη φόρμα.
  5. Στο μενού αρχείο , κάντε κλικ στο κουμπί
    Δημοσίευση.
  6. Στον "Οδηγό δημοσίευσης", κάντε κλικ στο κουμπί επόμενη, κάντε κλικ στο διακομιστή στο Webκαι, στη συνέχεια, κάντε κλικ στο κουμπί
    Επόμενο.
  7. Στο πλαίσιο διεύθυνση URL του Web και το όνομα αρχείου , πληκτρολογήστε τη διεύθυνση URL του εικονικού καταλόγου που δημιουργήσατε.
  8. Στο πλαίσιο όνομα φόρμας , πληκτρολογήστε
    twofield.xsn.

    Σημείωση Βεβαιωθείτε ότι η διεύθυνση URL μοιάζει με το ακόλουθο:
    http://myServer/myVirtualDirectory/twofield.xsn
  9. Κάντε κλικ στο κουμπί επόμενη, κάντε κλικ στο κουμπί Τέλοςκαι, στη συνέχεια, κάντε κλικ στο κουμπί Κλείσιμο.
  10. Πραγματοποιήστε έξοδο από το InfoPath.

Δημιουργία της σελίδας Default.asp

  1. Κάντε κλικ στο κουμπί Έναρξη, επιλέξτε Εκτέλεση, πληκτρολογήστε Σημειωματάριο (Notepad)και, στη συνέχεια, κάντε κλικ στο κουμπί
    OK.
  2. Επικολλήστε τον παρακάτω κώδικα στο Σημειωματάριο (Notepad).
    <%@ 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)και, στη συνέχεια, κάντε κλικ στο κουμπί
    OK.
  5. Επικολλήστε τον παρακάτω κώδικα στο Σημειωματάριο (Notepad).
    <%@ 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. Ξεκινήστε μια δεύτερη εμφάνιση του Σημειωματάριου (Notepad).
  8. Στο μενού αρχείο , κάντε κλικ στο κουμπί
    Άνοιγμα, κάντε κλικ στο κουμπί Form1.xmlκαι, στη συνέχεια, κάντε κλικ στο κουμπί
    Άνοιγμα.
  9. Εντοπίστε το xmlns: μου χώρου ονομάτων δήλωση κατά την Form1.xml, και στη συνέχεια αντιγράψτε την τιμή της.

    Σημείωση Η τιμή μοιάζει με το ακόλουθο:
    http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26
  10. Στο το αρχείο GetData.asp, εντοπίστε την ακόλουθη γραμμή:
    strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
  11. Αντικαταστήστε την τιμή της μεταβλητής strNamespaceμε την τιμή που αντιγράψατε στο βήμα 9.
  12. Κάντε κλικ στο κουμπί Αποθήκευση, και στη συνέχεια κλείστε το Σημειωματάριο (Notepad).
  13. Αντιγράψτε το αρχείο GetData.asp στον ίδιο εικονικό κατάλογο όπου βρίσκεται το πρότυπο φόρμας Twofield.xsn.

Προσθέστε κώδικα της φόρμας του InfoPath για την αυτόματη φόρτωση δεδομένων από τη σελίδα ASP

  1. Εκκίνηση του InfoPath.
  2. Στο InfoPath 2007, κάντε κλικ στην επιλογή " Σχεδίαση προτύπου φόρμας " στο αριστερό τμήμα του παραθύρου. Στο InfoPath 2003, κάντε κλικ στο κουμπί Σχεδίαση φόρμας στο αριστερό τμήμα του παραθύρου.
  3. Στο InfoPath 2007, κάντε κλικ Στον υπολογιστή μουστην ενότητα Άνοιγμα ενός προτύπου φόρμας. Στο InfoPath 2003, κάντε κλικ στην επιλογή Στον υπολογιστή μου στο πλαίσιο Άνοιγμα φόρμας σε κατάσταση σχεδίασης του το
    Παράθυρο εργασιών σχεδίασης μιας φόρμας .
  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.

Ελέγξτε τη φόρμα του InfoPath

Φόρτωση δεδομένων με χρήση του συμβάντος με Φόρτωση

Το συμβάν OnLoad της φόρμας TwoField.xsn φορτώνει δεδομένα από τη σελίδα GetData.asp, εάν δεν υπάρχουν άλλα δεδομένα στη φόρμα. Για να φορτώσετε τα δεδομένα, ακολουθήστε τα εξής βήματα:
  1. Κάντε κλικ στο κουμπί Έναρξη, επιλέξτε Εκτέλεση, πληκτρολογήστε τη διαδρομή της φόρμας και, στη συνέχεια, κάντε κλικ στο κουμπί OK. Η διαδρομή που πληκτρολογείτε παρόμοιο με το ακόλουθο:
    http://myServer/IPDynamicData/TwoField.xsn
  2. Εάν σας ζητηθεί, κάντε κλικ στο κουμπί
    Άνοιγμα.
Σημειώστε ότι το InfoPath ξεκινά και η φόρμα TwoField.xsn ανοίγει. Πεδίο1 περιέχει "δοκιμή πεδίο 5" και το Πεδίο2 περιέχει "δοκιμή πεδίο 6". Αυτές είναι οι τιμές που GetData.asp επιστρέφει όταν η παράμετρος dataRequest έχει οριστεί σε "3".

Για να φορτώσετε μια προεπιλεγμένη φόρμα χρησιμοποιώντας το ExternalApplication.New

Η σελίδα του αρχείου Default.asp δημιουργεί δέσμη ενεργειών πελάτη για να αυτοματοποιήσετε το αντικείμενο ExternalApplication για να εκκινείται το InfoPath και στη συνέχεια να δημιουργήσετε μια νέα φόρμα. Η νέα φόρμα είναι βασισμένη στα δεδομένα XML που επιστρέφεται από GetData.asp. Για να δημιουργήσετε τη νέα φόρμα, κάντε κλικ στο κουμπί Έναρξη, επιλέξτε Εκτέλεση, πληκτρολογήστε τη διαδρομή του αρχείου Default.asp σελίδας και, στη συνέχεια, κάντε κλικ στο κουμπί OK. Η διαδρομή που πληκτρολογείτε παρόμοιο με το ακόλουθο:
http://myServer/IPDynamicData/default.asp
Σημείωση Για να χρησιμοποιήσετε αυτήν τη μέθοδο, πρέπει να επιλέξετε Ερώτηση ή
Ενεργοποίηση για την Προετοιμασία και εκτέλεση στοιχείων ελέγχου ActiveX που δεν έχουν χαρακτηριστεί ως ασφαλή ρύθμιση στον Internet Explorer.

Σημειώστε ότι το InfoPath ξεκινά και η φόρμα TwoField.xsn ανοίγει. Πεδίο1 περιέχει "δοκιμή πεδίο 3" και περιέχει το Πεδίο2 "δοκιμαστικό πεδίο 4". Αυτές είναι οι τιμές που GetData.asp επιστρέφει όταν η παράμετρος dataRequest έχει οριστεί σε "2".

Η φόρτωση μιας υπάρχουσας φόρμας από μια σελίδα ASP

Η σελίδα GetData.asp επιστρέφει XML με τη σωστή μορφή για να το ανοίξετε ως αρχείο φόρμας InfoPath. Για να γίνει αυτό, κάντε κλικ στο κουμπί Έναρξη, επιλέξτε Εκτέλεση, πληκτρολογήστε τη διαδρομή της σελίδας GetData.asp και, στη συνέχεια, κάντε κλικ στο κουμπί OK. Η διαδρομή που πληκτρολογείτε παρόμοιο με το ακόλουθο:
http://myServer/IPDynamicData/getData.asp?dataRequest=1
Σημειώστε ότι το InfoPath ξεκινά και η φόρμα GetData.asp ανοίγει. Πεδίο1 περιέχει "δοκιμή πεδίου 1" και το Πεδίο2 περιέχει "δοκιμή πεδίου 2". Αυτές είναι οι τιμές που GetData.asp επιστρέφει όταν η παράμετρος dataRequest έχει οριστεί σε "1".

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς καμία εγγύηση, είτε σιωπηρή είτε ρητή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία διαδικασιών και τον εντοπισμό σφαλμάτων σε αυτές. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας, αλλά δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες για να καλύψουν τις συγκεκριμένες απαιτήσεις σας.
Ιδιότητες

Αναγνωριστικό άρθρου: 896451 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια