Hilfe bei der Entfernung einer Public Property

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von DerSmurf.

    ErfinderDesRades schrieb:

    Neue Rows haben glaub .Detached

    ja, die haben .Detached.

    Auch würde ich den Vorschlag von @Kasi in jedem Fall umsetzen: Die Preisänderungen mit ArtikelID und Datum in eine separate Tabelle wegspeichern.
    Dann kannst du (ob du das jemals brauchst oder nicht), dir jederzeit ein View basteln, was dir z.B. eine Preisentwicklung anzeigen kann.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Jau das ist Mega.
    Bei EditNew ist der RowState Detached. Bei EditCurrent ist er Added.
    Damit habe ich eine boolean gefüllt und kann entsprechend abfragen.

    VB.NET-Quellcode

    1. Private _EditArticle As Boolean = False
    2. Private Sub FrmEditArticle_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Dim SelectedArticle = DirectCast(DirectCast(ArticleBindingSource.Current, DataRowView).Row, DtsSettings.ArticleRow)
    4. If SelectedArticle.RowState = DataRowState.Added Then _EditArticle = True
    5. End Sub
    6. Private TestSub()
    7. If _EditArticle then messagebox.show("wird bearbeitet")
    8. End Sub

    DerSmurf schrieb:

    Bei EditCurrent ist er Added.

    Ne, bei einer neuen Row ist der RowState Detached. Sobald die Anlage der Neuen (über newdialog oder per Code) abgeschlossen ist, sollte die
    Added sein.

    Wenn du eine bestehende editierst ist die Changed bzw. Modified
    Kannst dazu mal die Maus über die Properties halten wenn du .Rowstate eingibst, da wird das erklärt (oder im ObjectBrowser). Unchanged sind Rows, die nicht angepackt wurden.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Beim bearbeiten eines Artikels (editCurrent) ist er bei mir Added.
    Beim erstellen eines neuen (EditNew - egal ob mit oder ohne Tuple), ist er Detached.

    Der Code mit entsprechender Prüfung klappt einwandfrei.

    Zu @Kasi Vorschlag. Den finde ich mega. Er steht aber (erstmal nur) auf meiner ToDo Liste.
    Denn ich versuche eigentlich immer nur aktiv an einem Projekt zu arbeiten. Das ist im Moment mein Angelmarken Lernprojekt.
    Aber ich muss natürlich die Fehler aus der Anwendung, die ich benutze entfernen.

    DerSmurf schrieb:

    ist er bei mir Added.

    dann geh' doch auf Nummer sicher und prüfe nur, ob Detached oder nicht. Dann kann das ja wurscht sein wie die anderen RowStates mal sein könnten
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    DerSmurf schrieb:

    Ich prüfe auf added und der rest ist mir wurscht.


    Und genau aus folgendem Grund solltest du deine Prüfung auf Detached verlagern, sonst kann's dir passieren dass es mächtig Murks gibt.
    Wegen mir prüf' auf Not Detached, wenn das hilfreicher ist ;)

    ErfinderDesRades schrieb:

    Bei EditCurrent kanns Added, Unchanged oder Modified sein.
    Je nachdem, ob der Datensatz frisch von Platte geladen wurde, durch vorherige Operationen verändert, oder überhaupt erst zugefügt wurde.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Ah sorry.
    Jetzt hab ichs verstanden!
    ​Bei EditCurrent kanns Added, Unchanged oder Modified sein. also ENTWEDER - ODER - ODER
    Bei EditNew ist es IMMER Not Detached.

    Also muss hieraus:
    ​ If SelectedArticle.RowState = DataRowState.Added Then _EditArticle = True , das werden:
    If Not SelectedArticle.RowState = DataRowState.Not detached Then _EditArticle = True




    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DerSmurf“ ()

    Die (Grundlagen-)Theorie dahinter: Boolean, Vergleiche und bedingte Verzweigungen

    Aber eiglich ists noch grundlegender:
    Ein Miserabilikum von vb ist, dass der Zuweisungs-Operator = genauso aussieht wie der Vergleichs-Operator =.
    Dabei gibts kaum verschiedeneres als Zuweisung und Vergleich. In c# malwieder besser gelöst, da hiesse es:
    var test = 1 == 0, also Zuweisung und Vergleich klar unterschieden.

    Jo, also ein Vergleich ergibt einen Ausdruck - also etwas, was einen Wert erzeugt. Das gilt glaub für alle Operatoren - zB auch der Additions-Operator ist immer Teil eines Ausdrucks (der einen Wert erzeugt).
    Nur für den Zuweisungs-Operator gilt das nicht - dieser Operator weist den Wert eines Ausdrucks (einer Variablen, oder einer Property) zu.

    ach egal - hier noch ein c#-Sample: var test = 1 + 4 == -1 + 6
    In vb sieht das halt bisserl gaga aus:
    Dim test = 1 + 4 = -1 + 6