Gelöst Datenstruktur - DataActionResult request.Key unvollständig

Dieses Thema im Forum ".NET (sagede.* DLLs)" wurde erstellt von mgosx, 20. August 2019.

  1. mgosx

    mgosx Mitglied

    Hallo zusammen,

    ich habe meinen ersten Dialog auf Basis einer Datenstruktur erstellt. Ich bin hierbei analog zu Rezept 13 vorgegangen.

    Abweichend vom Beispiel habe ich jedoch 2 Schlüsselfelder, Datetime Datum und Int32 MAID.
    Diese beiden Felder sind auch in der Datenquelle des Navigationselements als Schlüsselfelder angelegt.

    In Visual Studio:

    public class ZeiterfassungDataService : DataServiceBase
    {
    private const string KeyField1 = "Datum";
    private const string KeyField2 = "MAID";
    public override void PrepareMetadata(DataObjectBase rawMetadata)
    {
    DataStructure dataStructure = rawMetadata as DataStructure;
    if ((dataStructure != null))
    {
    if (!string.IsNullOrEmpty(KeyField1))
    {
    DataFieldObjectBase field1 = dataStructure.Fields.TryGetItem(KeyField1);
    if ((field1 != null))
    {
    dataStructure.PrimaryKeyField1 = KeyField1; ​
    }​
    }
    if (!string.IsNullOrEmpty(KeyField2))
    {
    DataFieldObjectBase field2 = dataStructure.Fields.TryGetItem(KeyField2);​
    if ((field2 != null))
    {
    dataStructure.PrimaryKeyField2 = KeyField2; ​
    }​
    }​
    }​
    }




    Beim Aufruf der Bildschirmmaske wird mir jedoch beim Debuggen in der Methode


    public override DataActionResult<DataContainer> GetItem(DataActionRequest request)
    {
    string[] keys = DecodeKeys(request.Key);
    DataContainer result = new DataContainer();
    Fischar.Personal.ZeiterfassungItem bo = new Fischar.Personal.ZeiterfassungItem();
    ZeiterfassungManager manager = new ZeiterfassungManager(Mandant);
    try
    {
    bo = manager.GetItem(Convert.ToDateTime(keys[0]), Convert.ToInt32(keys[1]));
    FillDto(result, bo);
    return DataActionResult.Succeeded(result);​
    }
    catch (DataNotFoundException)
    {
    return DataActionResult.NotFound<DataContainer>();​
    }
    catch (Exception ex)
    {
    return DataActionResult.ServerError<DataContainer>(ex);​
    }​
    }

    im Request als key[0] das Datum geliefert, keys[1] ist hingegen immer leer.


    Wenn ich beim Debuggen key[1] manuell setzte, wird anschliessend auch normal das Formular geladen.


    Wo wird festgelegt, was im Key[0-2] des Requests steht?
    Bzw. Warum ist dieser bei mir nur teilweise gefüllt?

    Gruss Mark
     
    Zuletzt bearbeitet: 20. August 2019
  2. mgosx

    mgosx Mitglied

    Hallo zusammen,
    habe den Fehler gefunden.
    Im AppDesigner, in meinem ediForm war nur Primärschlüssel 1 für Datensatz 1 ausgewählt.
    2 war leer.
    Nachdem ich dort noch diesen ergänzt habe klappt es nun einwandfrei.
     

Diese Seite empfehlen