Serverseitiges Filtern von externen Datenquellen in InfoPath mit Query Fields und REST Webservice

Ein Screenshot eines Computerbildschirms, der eine Reihe von Optionen zum Filtern externer Datenquellen auf der Serverseite zeigt.

Veröffentlicht:
Aktualisiert: 27. Juni 2021

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:

  1. Query Field SharePoint List Connections
  2. 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.

Auswahl Fahrzeuggattung:
Auswahl Fahrzeuggattung

 

Auswahl Fahrzeugnummer:
Auswahl Fahrzeugnummer


Konfiguration:
Die Datenverbindung normal als SharePoint List Connection einrichten.
Datenverbindung

Anschliessend die entsprechenden Felder auswählen.
Auswahl der Felder

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.
Daten beim Öffnen des Formulars

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.
Regeldetails

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.
Fahrzeuge all

 

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.
Suche

Die Ergebnisse werden dargestellt.
Ergebnisse

Konfiguration:

Neue Datenverbindung für REST-Webdienst einrichten.
Neue Datenverbindung für REST-Webdienst einrichten

Die URL des REST-Webdienstes eingeben.
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.
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.
Regeldetails

 

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“)

Suche nach Artikel Nummer und Kurztext

Quellen:

http://de.slideshare.net/23_kev/spsbne-advanced-infopath-and-nintex-workflow-techniques

http://kevinannfield.wordpress.com/category/infopath/

http://www.infopathdev.com/forums/t/26808.aspx

Beitrag teilen

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

IOZ_LOGO_weiss

Profis für M365-Intranets & digitale Arbeitsplätze, Power Apps, Power Automate Workflows, sowie Managementsysteme.

Angebote

Angebotsübersicht

Nach oben scrollen