Frage

Ich habe ein Problem beim Auffüllen einer Datentabelle mit den richtigen Daten.

Ich habe eine Datentabelle, die ich in einem Formular verwende. Es heißt userConfigProfiles. Es hat eine GroupId mit 2 FK-Spalten (dies verbindet sich mit UserGroupInfo) und corpProfileId (dies verbindet sich mit einer von mir erstellten Tabelle). Diese Daten in userConfigProfiles werden aus einem anderen Formular ausgefüllt und sind derzeit entsprechend ausgefüllt.

Das Problem ist, dass ich im SalesTable-Formular ein Dropdown-Menü erstellen muss, das eine Teilmenge der Zeilen in userConfigProfiles basierend auf den Benutzergruppen anzeigt, in denen sich der aktuelle Benutzer befindet.

Ich habe versucht, dies zu tun, indem ich der Tabelle userConfigProfiles im SalesTable-Formular den folgenden Code hinzufügte:

public void init()
{
    userConfigProfiles.data(userConfigProfiles::find());

    super();
}

Dann habe ich diese Suchmethode zur Tabelle selbst hinzugefügt:

static public userConfigProfiles find()
{
    userConfigProfiles userProfile;
    UserGroupList userGroupList;

    str 8 u = curUserId();

    select *
    from userProfile
    order by userProfile.bdcProfileId
        join userGroupList
    where userProfile.groupId == userGroupList.groupId
        && userGroupList.userId == u;

    return userProfile;
}

Es scheint jedoch, dass meine Suchmethode, obwohl sie aufgerufen wird und die richtigen Daten zurückgibt, keine Auswirkungen auf die Daten hat, die in die Dropdown-Liste in meinem Formular aufgenommen werden.

Meine Dropdown-Liste ist ein StringEdit-Feld mit einer DataSource von userConfigProfiles und einem DataField von corpProfileId.

Ich bin mir ziemlich sicher, dass es mehrere Möglichkeiten gibt, mein Problem zu lösen, und ich bin offen für alle, auch wenn dies bedeutet, dass ich meinen gesamten Code entferne und das Dropdown-Feld völlig anders mache.

War es hilfreich?

Lösung

Erstellen Sie eine Abfrage mit der Tabelle UserConfigProfiles mit einem vorhandenen Join (Eigenschaft joinMode) zur Tabelle UserGroupList, verwenden Sie die entsprechende Beziehung und fügen Sie dann einen Bereich für das Feld UserId mit einem value von (currentUserId()) hinzu.

Dieser Wert ist ein dynamischer Abfrageausdruck , der von der Klasse SysQueryRangeUtil .

Erstellen Sie abschließend eine Suche mit der Klasse SysTableLookup mithilfe Ihrer Abfrage.

Andere Tipps

Das mit Abstand beste Tutorial zu Suchmethoden ist Vanya:

http://kashperuk.blogspot.com/2009/04 / Lookup-Methoden-Tutorial-Benutzerdefinierte-Liste.html

Laden Sie sein Tutorial XPO herunter und verwenden Sie eine seiner Optionen für Ihr Formular.Ihr Code sieht ein bisschen wie ein Hack-Job aus.

Wenn Sie versuchen, eine Teilmenge von Datensätzen in der Tabelle anzuzeigen, sollten Sie die Abfrage () ändern. Wenn Sie jedoch versuchen, die angezeigten Werte aus einer Suche heraus zu ändern, würde ich seinen Blog-Beitrag lesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top