Auftragsbuch mit Dataset, Datagridview und XML-Export

  • VB.NET

Es gibt 89 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Neu

    Das Problem ist: Solange Du noch in der Zeile selber bist, ist der Editiermodus dafür nicht beendet.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    VaporiZed schrieb:

    Das Problem ist: Solange Du noch in der Zeile selber bist, ist der Editiermodus dafür nicht beendet.


    Gibt es irgendeinen Trick, das zu umgehen? Ich hatte versucht, einen Tastenanschlag mit SendKeys zu simulieren aber es muss in diesem Fall scheinbar wirklich ein physischer Anschlag sein.
    Auch jegliche Versuche mit Refresh brachten nichts.

    ErfinderDesRades schrieb:

    Bei CheckboxColumns gehe ich inzwischen quasi "hintenrum" vor:


    Ich verusche mal mein Glück

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Madde“ ()

    Neu

    Naja, statt da irgendwas zu simulieren, mach doch an der Stelle (wo immer das auch ist) ein DeinDGV.EndEdit: DeineBindingSource.EndEdit.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    Ich mach das im CellContentClick-EventHandler und da funktioniert das super.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    VaporiZed schrieb:

    Ich mach das im CellContentClick-EventHandler und da funktioniert das super.

    Habe es noch einmal damit versucht aber das funktioniert bei mir nicht wirklich. Ich muss erst den Haken setzen (klappt erst beim zweiten Klick...und nein ich verwende nicht das DoubleClick-Event ;) ) dann die Zelle verlassen und erst bei erneutem Klick in die Zelle kommt der Eintrag.

    Neu

    Na dann: finde den relevanten Unterschied
    Dateien
    • WinFormsVB.zip

      (22,6 kB, 2 mal heruntergeladen, zuletzt: )
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    VaporiZed schrieb:

    Na dann: finde den relevanten Unterschied

    8o Jetzt!!! Danke. Ich hatte die EndEdits nach der Befüllung der Spalten gesetzt. War wohl falsch.

    Ich hoffe, es ist Ok, wenn ich alle Fragen, welche das Auftragsbuch betreffen, hier reinschreibe und nicht immer einen neuen Post eröffne. Ich war der Meinung, der Übersichtlichtkeit wegen nur einen Anlaufpunkt zu haben, trotz der sehr variablen Fragen.

    Das Buch läuft im Übrigen aktuell in einer Testphase und macht bislang einen guten Eindruck. In wie weit das dann mit zunehmender Auftragsanzahl aussieht, wird man sehen.
    Eine Sache hätte ich dann doch noch.
    Es gibt die Möglichkeit der Filterung nach Auftragsnummer, Kunde oder Datum. Ich hätte gern noch eine Möglichkeit mit eingebaut, welche einen gesamten Monat listet. Sprich, per Combobox o.ä. den Monat wählen und dann werden alle Aufträge aus diesem Monat gelistet.
    Aktuell filtere ich nach Datum wie folgt.

    VB.NET-Quellcode

    1. TblAuftragsbuchBindingSource.Filter = String.Format("CONVERT([Eingangsdatum],System.String) LIKE '*{0}*'", TextBoxSearch.Text)


    Jetzt wird mir @ErfinderDesRades die DataExpressions ans Herz legen aber da steige ich irgendwie nicht dahinter.
    Ich glaube, ich benötige hier mal wieder einen Denkanstoß ;)

    Gruß Madde

    Neu

    Hier halte ich mal meine Variante (siehe post#28) neben der von Vpz:

    VB.NET-Quellcode

    1. Private Sub DgvOrders_CellContentClickVpz(sender As Object, e As DataGridViewCellEventArgs) Handles DgvOrders.CellContentClick
    2. If BsOrders.Count = 0 Then Return
    3. If e.ColumnIndex = 1 Then
    4. DgvOrders.EndEdit()
    5. BsOrders.EndEdit()
    6. Dim CurrentOrder = DirectCast(DirectCast(BsOrders.Current, Data.DataRowView).Row, DataSet1.OrdersRow)
    7. If CurrentOrder.IsDone Then CurrentOrder.TimeStamp = Date.Now
    8. End If
    9. End Sub
    10. Private Sub DgvOrders_CellContentClickEdr(sender As Object, e As DataGridViewCellEventArgs) Handles DgvOrders.CellContentClick
    11. If BsOrders.Count = 0 OrElse e.ColumnIndex <> 1 Then Return
    12. Dim CurrentOrder = DirectCast(DirectCast(BsOrders.Current, Data.DataRowView).Row, DataSet1.OrdersRow)
    13. CurrentOrder.IsDone = Not CurrentOrder.IsDone
    14. If CurrentOrder.IsDone Then CurrentOrder.TimeStamp = Date.Today
    15. End Sub
    wie gesagt: Bei mir ist die Spalte dann Readonly.
    Und die Checkbox zu klicken ist im Grunde gar keine Eingabe ins DGV (die mit bs.EndEdit nachzubessern ist).
    Sondern das ist nur ein Klick, der eine Codeseitige Datenmanipulation auslöst.



    Vielleicht wäre so auch noch sinniger:

    VB.NET-Quellcode

    1. Private Sub DgvOrders_CellContentClickEdr2(sender As Object, e As DataGridViewCellEventArgs) Handles DgvOrders.CellContentClick
    2. If BsOrders.Count = 0 OrElse e.ColumnIndex <> 1 Then Return
    3. Dim CurrentOrder = DirectCast(DirectCast(BsOrders.Current, Data.DataRowView).Row, DataSet1.OrdersRow)
    4. CurrentOrder.IsDone = Not CurrentOrder.IsDone
    5. CurrentOrder.TimeStamp = If(CurrentOrder.IsDone, Date.Today, #1/1/1900#)
    6. End Sub
    dass bei UnDone der Timestamp auch wieder auf den Minimalwert gesetzt wird.
    Noch weiter gedacht kann dann der Boolean aus dem Datenmodell sogar entfallen. IsDone ergibt sich ja aus dem Timestamp.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()