Verbindung mit dem Server bei Bedarf herstellen
Die Beispiellösungen 02-DisplayRecords.mtd (Startbildschirm links unten) und 03-DisplayOnDemand.mtd (Startbildschirm rechts unten) befinden sich im folgenden (Eigene) Dokumente-Ordner: Altova\MobileTogetherDesigner10\MobileTogetherDesignerExamples\Tutorials\OfflineUsage. Öffnen Sie die Dateien in MobileTogether Designer und starten Sie Simulationen (F5), um zu sehen, wie die Lösungen funktionieren.
Beide Lösungen unterscheiden sich insofern von der vorherigen Lösung 01-AddRecord.mtd, als darin die Daten der Server-basierten SQLite-Datenbank Addresses.sqlite nur angezeigt werden. Es gibt keinen Mechanismus, um Datensätze zur Datenbank hinzuzufügen. Die Lösungen wurden absichtlich vereinfacht, im den Fokus auf den Anzeige der Daten zu legen. Der Unterschied zwischen den beiden Lösungen besteht in ihrem Startbildschirm: Während der von 02-DisplayRecords.mtd (2) vom Server heruntergeladene Daten enthält, werden auf dem von 03-DisplayOnDemand.mtd (3) keine Server-Daten angezeigt. In 03-DisplayOnDemand.mtd (3), ist die Lösung offline; sie geht nur online, um Server-Daten herunterzuladen, wenn der Benutzer auf die Schaltfläche Aktualisieren (in der Abbildung rechts unten rot umrandet) klickt.
Beachten Sie in den Screenshots der Designs, dass die Zellen der Tabelle in 02-DisplayRecords.mtd (2) mit der Seitenquelle $DB1 (Abbildung links unten) verknüpft sind, während die Zellen der Tabelle in 03-DisplayOnDemand.mtd (3), mit der Seitenquelle $PERSISTENT (Abbildung rechts unten) verknüpft sind. Aufgrund dieser Seitenquellen - $DB1 (die mit der Datenbank auf dem Server verknüpfte Seitenquelle) und $PERSISTENT (die Seitenquelle auf dem Client) - werden in der Tabelle die Daten aus der entsprechenden Seitenquelle angezeigt.
•In (2) werden die Daten beim Start der Lösung vom Server in $DB1 heruntergeladen und sofort auf dem Startbildschirm angezeigt.
•In (3) werden Daten vom Server nur dann in $DB1 heruntergeladen, wenn auf die Schaltfläche Aktualisieren geklickt wird. Erst dann werden die Daten in $PERSISTENT kopiert und aufgrund des Seitenquellen-Link in der Tabelle angezeigt. Darum ist die Tabelle leer, bis der Benutzer auf die Schaltfläche Aktualisieren klickt.
Schlüsseleinstellungen
In der folgenden Tabelle sehen Sie zum Vergleich die Schlüsseleinstellungen der beiden Lösungen.
02-DisplayRecords.mtd (2) | 03-DisplayOnDemand.mtd (3) | Auswirkung |
Daten laden = Bei der ersten Verwendung | Daten laden = Nicht automatisch | In (2) werden die Datenbankdaten beim Start der Lösung angezeigt. In (3) ist dies nicht der Fall. |
Server-Zugriff = Immer | Server-Zugriff = Bei Bedarf | In (3) wird sichergestellt, dass der Server nur kontaktiert wird, wenn auf die Schaltfläche Aktualisieren geklickt wird. |
Keine Aktion für BeiSeitenaktualisierung | BeiSeitenaktualisierung lädt Datenbankdaten vom Server. | In (3) werden beim Aktualisieren der Seite Datenbankdaten vom Server geladen. Die Schaltfläche Aktualisieren ist nur aktiv, wenn für das Ereignis eine Aktion definiert wurde. |
Die Einstellung "Daten laden"
Der Grund dafür, dass (2) heruntergeladene Daten enthält, während (3) keine enthält, ist die Einstellung Daten laden, welche in (2) auf Bei der ersten Verwendung und in (3) auf Nicht automatisch gesetzt wurde. In (2) werden Daten beim Start der Lösung geladen.
Die Einstellung "Server-Zugriff"
Die Einstellung Server-Zugriff (Immer, bei Bedarf oder Nie) hat keine Auswirkung auf das Herunterladen von Daten beim Start der Lösung (dies hängt von der Daten laden-Einstellung ab). Über die Einstellung Server-Zugriff können Sie hingegen festlegen, ob der Server kontaktiert werden soll. Über die Einstellung Bei Bedarf haben Sie mehr Kontrolle über das Design und den Kommunikationsprozess. So werden etwa in (3) die Tabellendaten nur dann vom Server heruntergeladen, wenn auf die Aktualisieren-Schaltfläche der Lösung geklickt wird. Dies wird im Design durch Definition der folgenden Aktionen für das BeiSeitenaktualisierung-Ereignis festgelegt:
1.Die Seitenquelle $DB1 vom Server neu laden. Der Server wird kontaktiert und die Daten werden heruntergeladen.
2.Zeilen-Nodes der $PERSISTENT-Struktur löschen. Dies dient als Vorbereitung für das Hinzufügen der gerade aktualisierten Zeilen-Nodes von $DB1 zu $PERSISTENT (siehe vorhergehender Schritt). Beachten Sie, dass die Daten nur aus der Seitenquelle $PERSISTENT auf dem Client-Gerät entfernt werden; die Datenbank auf dem Server ist davon nicht betroffen.
3.Aktualisieren des Root-Node der persistenten Struktur mit den soeben aktualisierten Zeilen-Nodes der $DB1-Struktur. Dies ist erforderlich da in der Tabelle die Nodes der Seitenquelle $PERSISTENT (in der Abbildung unten grün umrandet) (und nicht die von $DB1) angezeigt werden.
Beachten Sie, dass in (3) nur bei Auslösung der Aktion Neu laden auf den Server zugegriffen wird und die Daten heruntergeladen werden.