2009-08-24 4 views
7

Ich habe Formular mit VendTable Raster zum Beispiel, die CustAccount Feld hat.Dynamics AX 4.0, öffnende Form ohne Anwendung Filter auf aktuellen Datensatz

Ich möchte Schaltfläche, klicken Sie auf, die CustTable Formular öffnen, wo alle Kunden sichtbar sind.

Wenn ich nur CustTable-Menüelement einfüge, wird das CustTable-Formular geöffnet, wenn Sie darauf klicken, aber in diesem Formular wird nur ein Datensatz angezeigt, der dieselbe AccountNum wie in vendTable.CustAccount hat.

Wie öffne ich das ganze custTable? Gibt es eine bessere Lösung als die Schaltfläche create und dann ClassFactory :: FormRunOnClient zum Anzeigen des Formulars?

PS. Ich brauche Button, also RMB -> "Gehe zum Haupttabellenformular" zählt nicht.

Antwort

6

Das Problem ist, dass der VendTable Datensatz als ein Argument auf die CustTable Form angewendet wird, die dann einen Dynalink erstellt. Die Lösung besteht darin, das Argument zu vermeiden.

überschreiben Sie die clicked Methode in dem wie dieser Menüpunkt CustTable Anzeige:

void clicked() 
{ 
    this.menufunction().run(new Args(element)); 
} 

Dies ruft die CustTable Form mit dem Anrufer Objekt nur und ohne das Protokoll Argument.

0

Sie haben 2 Optionen, Sie können entweder eine Schaltfläche erstellen und die angeklickte() Methode überschreiben, oder verwenden Sie ein MenuItemButton und weisen Sie ihr ein Action MenuItem zu.

Die Verwendung von MenuItems ist eine bewährte Methode, da Sie damit das AX2-Sicherheitssystem & verwenden können. Sie können dem MenuItem eine Klasse zuordnen und in der main() -Methode der Klasse können Sie die FormRunOnClient() - Dateien nach Bedarf ausführen.

3

Ich weiß, das ist eine ziemlich alte Frage, aber wenn jemand hier nach der Antwort sucht, rufen Sie einfach Methode clearDynalinks() auf das Objekt QueryBuildDataSource.

Zum Beispiel haben Sie ein Formular erstellt und es filtert Ihre Datenquelle automatisch wegen der Dynalinks dass Dynamics automatisch erzeugt, lösen Sie es von innerhalb des init() Methode den folgenden Code setzen, auf dem Formular Datenquelle:

QueryBuildDatasource qbds; 
; 


qbds = this.query().dataSourceTable(tablenum(MyTableName)); 
qbds.clearDynalinks(); 

// Next line is optional, it clears initial ranges 
qbds.clearRanges(); 

// if you need to add any ranges you can do it right after you clear the initial dynalinks/ranges 

Hoffe es hilft ...

Verwandte Themen