Möchte man in einem InfoPath Formular auf SharePoint grosse SharePoint Listen mit vielen Spalten und Datensätzen als externe Datenquellen verwenden, muss man mit einer verschlechterten Performance rechnen.
Clientseitiges Filtern bringt hierbei keine Verbesserung, da stets alle Daten aus der Datenverbindung geladen werden. Deshalb ist es wichtig, im Umgang mit grossen Datenmengen innerhalb von InfoPath einen serverseitigen Filter anzuwenden.
Dazu bieten sich zwei Varianten an:
- Query Field SharePoint List Connections
- REST Webservice
Query Fields
Eine einfache Variante externe Datenquellen serverseitig zu filtern, ist der Einsatz von Query Fields.
Anwendungsbeispiel:
In diesem InfoPath Formular kann der Benutzer eine Fahrzeuggattung und eine dazugehörige Fahrzeugnummer auswählen. Dabei sollen im Dropdown Listenfeld der Fahrzeugnummer aber nur diejenigen Elemente aus der externen Datenquelle geladen werden, welche auf die ausgewählte Fahrzeuggattung zutreffen. Somit wird nicht die komplette Liste geladen, sondern nur diejenigen Elemente, welche für die Auswahl benötigt werden. Die Performance kann somit markant verbessert werden.
Konfiguration:
Die Datenverbindung normal als SharePoint List Connection einrichten.
Anschliessend die entsprechenden Felder auswählen.
Die Daten sollen nicht beim Öffnen des Formulars geladen werden.
In einer separaten Datenverbindung wird lediglich die Spalte der Fahrzeuggattung beim Öffnen des Formulars geladen.
Beim Setzen der entsprechenden Fahrzeuggattung wird nun eine InfoPath Regel eingeführt.
Das Query Feld der externen Datenquelle erhält den vom Benutzer im Formular ausgewählten Wert.
Erst jetzt wird die externe Datenquelle „Fahrzeuge all“ aufgerufen. Als Filterwert wird nun das gesetzte Query Feld verwendet, welches der User im Formular bereits angegeben hat.
REST Webservice
REST Webdienste bieten eine weitere Möglichkeit, grosse externe Datenquellen in InfoPath serverseitig zu filtern.
Vorteile gegenüber Query Fields:
– Case insensitive für Textfelder
– Query Fields funktionieren bei Repeating Tables in InfoPath 2010 nicht
Anwendungsbeispiel:
Es wird eine einfache Suchmaske implementiert, in der nach Artikelnummer und Artikelbezeichnung gesucht werden kann. Die Artikelliste ist eine sehr umfangreiche SharePoint-Liste und enthält 10‘000 Elemente.
Der Benutzer kann über das Eingabefeld nach Material Nummer oder Materialbezeichnung suchen.
Die Ergebnisse werden dargestellt.
Konfiguration:
Neue Datenverbindung für REST-Webdienst einrichten.
Die URL des REST-Webdienstes eingeben.
Aufbau der URL in diesem Beispiel:
https: //portal.company.ch/site/_vti_bin/listdata.svc/ZbMaterialstamm()?$select=Material,Materialkurztext
- https: //portal.company.ch/site ->Â Seite, in der sich die SharePoint Liste befindet
- /_vti_bin/listdata.svc -> REST Web Service Aufruf
- ZbMaterialstamm() -> Name der Liste
- ?$select=Material,Materialkurztext -> Felder aus der Liste, die verwendet werden sollen
Die Daten sollen nicht beim Öffnen des Formulars geladen werden.
In InfoPath wird nun wieder eine neue Regel hinzugefügt. In einem versteckten InfoPath Textfeld wird die korrekte REST URL zusammengesetzt, welche anschliessend in der Datenverbindung überschrieben wird.
Als Wert wird folgendes eingetragen:
verketten („https://portal.company.ch/site/_vti_bin/listdata.svc/ZbMaterialstamm()?$filter=substringof(‚“; Artikelsuche-Eingabe; „‚,“; „Materialkurztext“; „)“; „&$select=Material,Materialkurztext“)
- https://portal.company.ch/site -> Seite, in der sich die SharePoint Liste befindet
- /_vti_bin/listdata.svc -> REST Web Service Aufruf
- ZbMaterialstamm() -> Name der Liste
- ?$filter= -> Filterwerte für die Liste
Als Filterwerte sind übliche REST-Commands erlaubt.
Supportete Filter Commands für SharePoint REST Requests finden Sie hier:
http://msdn.microsoft.com/en-us/library/fp142385(v=office.15).aspx
Weiteres Beispiel für die Suche nach Artikel Nummer und Kurztext:
verketten(„https://portal.company.ch/site/_vti_bin/listdata.svc/ZbMaterialstamm()?$filter=substringof(‚“; Artikelsuche-Eingabe; „‚,“; „Materialkurztext“; „) or substringof(‚“; Artikelsuche-Eingabe; „‚,“; „Material“; „) „; „&$select=Material,Materialkurztext,Foto“)
Quellen:
http://de.slideshare.net/23_kev/spsbne-advanced-infopath-and-nintex-workflow-techniques
Beitrag teilen