Mashup Builder > Widgets > Legacy-Widgets > Erweiterte Raster (Legacy) > Im erweiterten Raster und Strukturraster sortieren, suchen und filtern
Im erweiterten Raster und Strukturraster sortieren, suchen und filtern
Das Sortieren, Suchen und Filtern von Rasterdaten erfolgt über einen Standardplattform-Abfragedienst mit einem einzelnen Filter-Ereignis und einem QueryFilter-Parameter. Wenn das Filter-Ereignis ausgelöst wird und die Rasterdaten sortiert, gesucht oder gefiltert werden sollen, stellt der Parameter QueryFilter sicher, dass die zurückgegebenen Daten alle angegebenen Bedingungen erfüllen.
Sie können die Daten zum Sortieren, Suchen und Filtern auf folgende Arten abfragen:
Richten Sie eine Datentabelle ein, die Ihre Daten enthält, und greifen Sie mit der Standardplattform-API QueryDataTableEntries darauf zu.
Wenn Sie Daten dynamisch über einen Datendienst generieren, verwenden Sie die Infotable-Abfragefunktion, um Daten in einer Infotable zu sortieren und zu suchen.
Weitere Informationen zu Abfrageparametern finden Sie im Abschnitt Abfrageparameter für Abfragedienste des ThingWorx Hilfe-Centers.
Sortierung implementieren
1. Legen Sie die Eigenschaft EnableSorting auf "true" fest, indem Sie entweder in der Eigenschaftsfensterbereich des Mashup Builder auf sie klicken oder sie im JSON-Skript eines dynamischen Konfigurationsdiensts definieren. Die Eigenschaft QueryFilter und das Ereignis Filter werden im Eigenschaftenfensterbereich angezeigt.
2. Binden Sie die Eigenschaft QueryFilter an den Eingabeparameter query, in dem sich die zu sortierenden Daten befinden:
Wenn sich Ihre Daten in einer Tabelle befinden, binden Sie QueryFilter an den queryQueryDataTableEntries-Parameter des -Diensts.
Wenn Sie Daten über einen Datendienst generieren, binden Sie QueryFilter an den QueryFilter-Parameter des Datendiensts.
3. Binden Sie das Filter-Ereignis an den Dienst, der beim Starten der Sortierung ausgelöst wird:
Wenn Sie eine Datentabelle verwenden, binden Sie das Ereignis Filter an den Dienst QueryDataTableEntries.
Wenn Sie Daten über einen Datendienst generieren, binden Sie das Ereignis Filter an den Datendienst.
Das folgende Beispiel zeigt einen Abfrageparameter, auf den der Name und der Titel der Sortierspalten angewendet wurde:
{"maxItems":100000,"query":{"sorts":[{"fieldName":"name","isAscending":true},{"fieldName":"title","isAscending":true}]}}
Wenn diese Bindungsschritte abgeschlossen sind, sollte der Fensterbereich Bindungen wie folgt aussehen:
Suche implementieren
Die Suche bietet die Möglichkeit, einen Zeichenfolgenwert in einer beliebigen Spalte in einem Raster zu suchen.
1. Legen Sie die Eigenschaft EnableGridSearch auf "true" fest, indem Sie entweder in der Eigenschaftsfensterbereich des Mashup Builder auf sie klicken oder sie im JSON-Skript eines dynamischen Konfigurationsdiensts definieren. Die Eigenschaft GridSearchLocation, die Eigenschaft QueryFilter und der Filter werden im Eigenschaftsfensterbereich angezeigt.
2. Verwenden Sie die Eigenschaft GridSearchLocation entweder im Mashup Builder-Eigenschaftsfensterbereich oder in einem JSON-Skript, um einen Speicherort für das Suchfeld im Raster zu konfigurieren. Zu den verfügbaren Optionen gehören: oben rechts, oben links, unten rechts und unten links.
3. Binden Sie die Eigenschaft QueryFilter an den Ausgabe-Abfrageparameter, in dem sich die zu suchenden Daten befinden:
Wenn sich Ihre Daten in einer Tabelle befinden, binden Sie QueryFilter an den Abfrageparameter des QueryDataTableEntries-Dienstes.
Wenn Sie Daten über einen Datendienst generieren, binden Sie QueryFilter an den QueryFilter-Parameter des Datendiensts.
4. Binden Sie das Ereignis Filter an den Dienst, der beim Starten der Suche ausgelöst wird:
Wenn Sie eine Datentabelle verwenden, binden Sie das Ereignis Filter an den Dienst QueryDataTableEntries.
Wenn Sie Daten über einen Datendienst generieren, binden Sie das Ereignis Filter an den Datendienst.
Das folgende Beispiel zeigt eine Suchabfrage, die in allen Spalten nach einem Ereignis namens Rain sucht:
{"maxItems":100000,"query":{"filters":{"type":"OR","filters":[{"fieldName":"id","type":"LIKE","value":"%Rain%"},{"fieldName":"date","type":"LIKE","value":"%Rain%"},{"fieldName":"max_temp","type":"LIKE","value":"%Rain%"},{"fieldName":"min_temp","type":"LIKE","value":"%Rain%"},{"fieldName":"cold","type":"LIKE","value":"%Rain%"},{"fieldName":"visibility","type":"LIKE","value":"%Rain%"},{"fieldName":"wind","type":"LIKE","value":"%Rain%"},{"fieldName":"precipitation","type":"LIKE","value":"%Rain%"},{"fieldName":"events","type":"LIKE","value":"%Rain%"},{"fieldName":"image","type":"LIKE","value":"%Rain%"},{"fieldName":"key","type":"LIKE","value":"%Rain%"},{"fieldName":"location","type":"LIKE","value":"%Rain%"},{"fieldName":"source","type":"LIKE","value":"%Rain%"},{"fieldName":"sourceType","type":"LIKE","value":"%Rain%"},{"fieldName":"tags","type":"LIKE","value":"%Rain%"},{"fieldName":"timestamp","type":"LIKE","value":"%Rain%"}]}}}
Filter implementieren
Um Filter in einem Raster zu implementieren, fügen Sie dem Mashup, in dem Sie das Raster erstellen, ein Widget vom Typ "Datenfilter" hinzu. Sie können das Widget "Datenfilter" nur zu einem Raster hinzufügen, das an eine Datentabelle basierend auf einem zugrunde liegenden Data Shape gebunden ist.
1. Wählen Sie auf der Registerkarte Widgets auf der linken Seite des Mashup Builder das Widget "Datenfilter" aus, und ziehen Sie es in das Mashup.
2. Binden Sie den Ausgabe-Abfrageparameter des Widgets "Datenfilter" an die Eigenschaft QueryFilter des erweiterten Rasters. In diesem Szenario dient die Eigenschaft QueryFilter sowohl der Eingabe als auch der Ausgabe. Sie empfängt Eingaben vom Datenfilter, der automatisch mit einer beliebigen Sortier- und Sucheingabe kombiniert wird, die aktiviert ist, und generiert eine einzelne Ausgabe für den Abfrageparameter.
3. Binden Sie die Eigenschaft QueryFilter an den Eingabeparameter query des Diensts QueryDataTableEntries der Datentabelle, die gefiltert, sortiert oder durchsucht wird.
Das folgende Beispiel zeigt eine Datenfilter-Abfrage mit einem einzelnen Filterparameter, einem Ereigniswert von Rain:
{"maxItems":100000,"query":{"filters":{"fieldName":"events","type":"LIKE","value":"Rain*"}}}
Eine Filterabfrage kann viel komplexer sein, wenn mehrere Filter angewendet werden oder wenn die Filtereingabe mit Such- und Sortierparametern kombiniert wird. Das folgende Beispiel zeigt eine Kombination aus Sortier-, Such- und Filterparametern in einer einzelnen Ausgabe-Abfrage:
{"maxItems":100000,"query":{"sorts":[{"fieldName":"id","isAscending":true},{"fieldName":"min_temp","isAscending":true}],"filters":{"type":"And","filters":[{"type":"And","filters":[{"fieldName":"events","type":"LIKE","value":"Rain*"},{"fieldName":"cold","type":"EQ","value":false}]},{"type":"OR","filters":[{"fieldName":"id","type":"LIKE","value":"%21%"},{"fieldName":"date","type":"LIKE","value":"%21%"},{"fieldName":"max_temp","type":"LIKE","value":"%21%"},{"fieldName":"min_temp","type":"LIKE","value":"%21%"},{"fieldName":"cold","type":"LIKE","value":"%21%"},{"fieldName":"visibility","type":"LIKE","value":"%21%"},{"fieldName":"wind","type":"LIKE","value":"%21%"},{"fieldName":"precipitation","type":"LIKE","value":"%21%"},{"fieldName":"events","type":"LIKE","value":"%21%"},{"fieldName":"image","type":"LIKE","value":"%21%"}]}]}}
Wenn im erweiterten Raster der Filter zusammen mit der Sortierung und/oder Suche verwendet wird, sollten die Bindungen nach Abschluss wie im folgenden Diagramm aussehen:
War dies hilfreich?