2014-02-10 3 views
5

Das Problem, das ich versuche, die beste Lösung zu finden, umfasst das Standard-Szenario einer Master-Tabelle (Bestellungen zum Beispiel) und einer Detailtabelle (Bestellzeilen). Beide in getrennten Tabellen. Vom Server kann ich sowohl verschachtelte json-Daten als auch zwei separate Entitäten erzeugen. Auf meiner Client (ExtJS) -Seite muss ich sowohl die verschachtelten Daten mit einer Vorlage anzeigen als auch in der Lage sein, CRUD-Operationen sowohl für die Aufträge als auch für die Details durchzuführen.In ExtJS, wie Master Details mit Updates für beide Tabellen zu behandeln

Ich habe zwei Lösungen, von denen ich keine mag. Ich bereite Trainingsmaterial vor und möchte den Studenten eine ausgezeichnete Lösung anbieten, die nicht voller Gefahren ist. Hier sind die zwei, die ich mir ausgedacht habe.

Szenario 1

Create a two models and one store using the associations tag (belongsTo and hasmany). This works perfect for viewing the data, however the CUD of CRUD is really miserable for me. Maybe I am missing something but it seems you have to implement custom readers and do many unnatural things to make this work.

Scenario 2

Create two models and two stores. Implement a filter on the details store so that when a the master table (grid) changes row selection, the details table (grid) gets filtered. This makes creating a nested view for the template a little awkward because you have to build the json object yourself, but the bigger problem is that you have to load all your details ahead of time and filter on those on each master row selection. Or, you can do a

nother ajax Anfrage auf jeder Zeilenänderung, die der Client nicht sehr leistungsfähiger macht.

Ich würde gerne eine bessere Lösung hören oder wie eines meiner Szenarien besser sein könnte.

Antwort

3

In ähnlichen Problem in meiner Anwendung gehe ich mit Ihrem Szenario 1. Welche Probleme haben Sie damit?

Das einzige Problem, das ich hatte, war, dass Assoziationsdaten nicht an den Server auf model.save gesendet wurden. Und die Problemumgehung bestand darin, eine Json Writer-Überschreibung hinzuzufügen.

Hoffentlich enthält Sencha ein Flag für die Aufnahme von Assoziationsdaten in zukünftigen ExtJS-Versionen. Aber die Problemumgehung ist ziemlich einfach, wie Sie sehen können.

+0

sieht gut aus. Ich werde das versuchen. Funktioniert das mit verschachtelten? (Versuch, meinen Kopf darum zu wickeln), das heißt Kunden haben Bestellungen, Bestellungen haben Werbebuchungen. –

+0

In v5.1, Der obige Code und Variationen davon Fehler beim Start mit "Uncaught Error: Kann die Methode getRecordData auf Ext.data.writer.Json Instanz nicht überschreiben.". Die Problemumgehung (mit unbekannten Konsequenzen) besteht darin, $ configStrict: false zu Ihrem Konfigurationsobjekt hinzuzufügen. – Stevko