none
BindingSource RaiseListChangedEvents=False & EndEdit / Update RRS feed

  • Frage

  • Auf einer Form habe ich einen DataGridView sowie einen Bereich in den
    die selektierte oder neu erstellte Row editiert wird.

    Eigentlich möchte ich erreichen, dass das an Bindingsource gebundene DataGridView,
    beim erzeugen einer neuen DataRow, diese erst nach dem Click auf den übernehmen Button anzeigt.
    Nicht schon beim erstellen mit BindingSource.AddNew()  .

    Wenn ich BS.RaiseListChangedEvents = False setze, wird die Row im Grid nicht angezeigt.
    Jedoch kann ich die Row nicht speichern. Nach dem Aufruf eines BS.EndEdit, ist der
    RowState der DataRow immer noch auf detached. Auch davor ein BS.RaiseListChangedEvents = True
    ändert daran nichts.

    Könnte mir jemand etwas dazu sagen, wie ich veranlassen kann, das die DataRow gespeichert werden kann?


    --Neue Row erzeugen----------------
    AnwesenheitZeitBindingSource.RaiseListChangedEvents = False   
    drv = AnwesenheitZeitBindingSource.AddNew()     
    _rowAnwensendZeit = drv.Row

    ---in einer anderen Procedure---------------
    ----Speichern------
    AnwesenheitZeitBindingSource.RaiseListChangedEvents = True
     _rowAnwensendZeit.BeginEdit()
    _rowAnwensendZeit.Datum =Datum.Value
    _rowAnwensendZeit.Bemerkung = txtBemerkung.Text
     _rowAnwensendZeit.EndEdit()
    AnwesenheitZeitBindingSource.EndEdit()

    i = _AnwesenheitZeitTableAdapter.Update(rowAnwensendZeit)

    Gruss Peter

    Dienstag, 20. September 2011 15:35

Antworten

  • Hi Peter,
    wenn Du willst, dass das neue Datenobjekt vorerst nicht in der Auflistung erscheint, solltest Du anstelle AddNew eine einfache Instanziierung nutzen und dann erst beim Klick auf die “Übernehmen” Schaltfläche dieses Datenobjekt der Auflistung hinzugefügt wird.
     
    --
    Viele Gruesse
    Peter
    • Als Antwort vorgeschlagen Peter Fleischer Mittwoch, 21. September 2011 05:02
    • Als Antwort markiert peter haus Freitag, 23. September 2011 04:04
    Mittwoch, 21. September 2011 04:18

Alle Antworten

  • Hi Peter,
    wenn Du willst, dass das neue Datenobjekt vorerst nicht in der Auflistung erscheint, solltest Du anstelle AddNew eine einfache Instanziierung nutzen und dann erst beim Klick auf die “Übernehmen” Schaltfläche dieses Datenobjekt der Auflistung hinzugefügt wird.
     
    --
    Viele Gruesse
    Peter
    • Als Antwort vorgeschlagen Peter Fleischer Mittwoch, 21. September 2011 05:02
    • Als Antwort markiert peter haus Freitag, 23. September 2011 04:04
    Mittwoch, 21. September 2011 04:18
  • Hi Peter,

    Dank für deine Antwort.

    Meintest du auf diese Art erstellen?
    _rowAnwensendZeit = dtAnwesenheitZeit.NewAnwesenheitZeitRow

    und aufnehmen so
    dtAnwesenheitZeit.AddAnwesenheitZeitRow(_rowAnwensendZeit)

    Ich habe da immer ein par unsicherheiten, deswegen stellt sich mir noch die Frage.

    Was mache ich im Fall eines abbruchs mit der (detached) DataRow, wenn die Bearbeitung abgebrochen wird?

    Gibt es auch die Möglichkeit die detached DataRow direkt in das BindingSource Objekt aufzunehmen?
    Das BindingSource Objekt gibt ja mit AddNew ein DataRowView zurück.

    Viell Grüsse
    Peter

     

    Mittwoch, 21. September 2011 05:39