Ich habe 3 Gitter, ein Gitter als Kopf und das andere als Detail, ich möchte 2 Raster aktualisieren, wenn das Raster zuerst Datensatz auswählen. Ich habe versucht, mit AutoCallBack
, aber immer noch nur 1 Gitter, wie es automatisch aufrufen?Acumatica: AutoCallback mit mehreren Zielen
Antwort
Es gibt ein paar Möglichkeiten, dies zu tun, aber ein gutes Beispiel ist die "Assignment and Approval Maps" unter Org -> Org Structure.
Wenn Sie in diesem Bildschirm auf das Raster "Regeln" klicken, wird das Raster "Bedingungen" automatisch aktualisiert.
Dies wird in erster Linie durch zwei Elemente
1) AutoCallback Befehle in den oberen/Hauptraster 2) Paramater in den unteren/Detail Gittern gesteuert.
Zum Beispiel auf dem Bildschirm verwiesen gibt es zwei Grids „topGrid“ und „bottomGrid“
topGrid hat die folgenden
<AutoCallBack Target="tree" Command="Refresh" ActiveBehavior="True">
<Behavior RepaintControlsIDs="formRuleType,bottomGrid" ></Behavior>
</AutoCallBack>
, dass eine Auffrischung der bottomGrid ausstellt als die topgrid Reihe ist ausgewählt/geändert Die „KeepPosition“ und „syncPosition“ Flags in der Definition von topGrid wird einen Beitrag zwingen, als Zeilen ausgewählt werden (‚Current‘, wie die aktuell ausgewählte Zeile zu halten
nun im unteren Gitter haben Sie wie folgt vor:.
<Parameters>
<px:PXControlParam ControlID="topGrid" Name="routeID" PropertyName="DataValues["AssignmentRouteID"]" Type="Int32" ></px:PXControlParam>
</Parameters>
, der sagt, dass „bottomGrid“ eine Parm hat den Namen „RouteID“, die es Wert aus dem „AssignmentRouteID“ des topgrid zieht.
Wenn Sie die bottomGrid am BQL aussehen (primäre Datamember ist „Rules“ Sie werden die folgende Definition sehen:
protected virtual IEnumerable rules([PXDBInt] int? routeID)
{
Die Definition verwendet die definierten param, es in hier vorbei für die select-Anweisung zu verwenden, um die richtigen Datensätze
Mit diesem Ansatz zurückkehren können Sie Ihre Detail Raster aktualisieren, wenn der Kopf Raster eine Zeile auswählt. Zur gleichen Zeit verwendet das Detailraster einen Wert im Kopfbereich als Parameter für seine select-Anweisung.
es funktioniert, danke für Ihren Vorschlag. – Distor4by
Meinst du, dass grid2 Datensätze anzeigen soll, die sich auf die ausgewählte Zeile in grid1 beziehen? Wenn der Benutzer also einen Datensatz in grid1 auswählt, sollte grid2 die Datensätze erneut laden. –