none
Frage zu bindingSource.Clear() - Rücksetzen oder Löschen der zugewiesenen Daten RRS feed

  • Allgemeine Diskussion

  • Hallo

    ich hätte eine Frage zu der bindingSource.Clear() - Methode.

    Ich habe eine Löschfunktion in meiner WinForms-Applikation, mit der zuerst die Daten in der Datenbank (via Entity-Framework und POCO) gelöscht werden, und danach setze ich im UserControl meine bindingSource-Komponenten zurück - mit der Clear()-Methode.

    Wenn ich aber nach der Clear-Methode folgende Abfrage ausführe:

    Person currentPatient = bindingSourcePatient.DataSource as Person;
    if (currentPatient == null || currentPatient.PrimaryKey == Guid.Empty)
                    return -1;

    dann sind nach dieser Clear-Methode immer noch die Daten von vor dem Löschen enthalten. 

    D.h. für mich schaut es so aus, als ob die Clear()-Methode nichts bewirken würde.

    Kann mir dazu bitte jemand einen Rat geben??

    Vielen Dank schon mal & schönen Gruß,

    Michael


    Michael Erlinger

    Mittwoch, 22. November 2017 14:05

Alle Antworten

  • Hi Michael,
    die BidingSource nutzt als Datenquelle ein Repository. Hast Du darin auch die Daten entfern?

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 22. November 2017 14:38
  • Hallo

    mein Delete-Vorgang würde so aussehen:

    internal void DeletePerson()
            {
                Person currentPatient = bindingSourcePatient.DataSource as Person;
                if (currentPatient == null)
                    return;
    
                using (PatFallRepository repoFall = new PatFallRepository())
    ......
    // einige Validierungen, ob Delete möglich
    ......
    
    // Abfrage ob wirklich löschen
    .....
    
                try
                {
                    currentPatient.MarkAsDeleted();
                    using (PatientenRepository repo = new PatientenRepository())
                        repo.Save(currentPatient);
    
                    ClearData();
                }
                catch (Exception ex)
                {
                    MessageLogging.ShowExceptionMessageBox(ex, "Error - DeletePatient()");
                }
            }
    

    und in der ClearData()-Methode setze ich diverse Kennzeichen, Controls usw. zurück; bzw. führe die BindingSource.Clear()-Methoden aus.

    Schönen Gruß,

    Michael


    Michael Erlinger

    Mittwoch, 22. November 2017 15:00
  • Hi Michael,
    so wie Du das geschrieben hast, sollte die BindingSource.Clear()-Methode die Elemente der Auflistung, aus der die BindingSource ihre Daten bezieht, entfernt werden.

    Um Dir weiter zu helfen, solltest Du eine kleine Demo bereitstellen, die dieses Verhalten reproduziert.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks


    Mittwoch, 22. November 2017 15:52