Datengebundene DGV nach Datum sortieren

  • VB.NET

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

    Datengebundene DGV nach Datum sortieren

    Hallo!
    Ich habe eine Datengebundene Datagridview

    In Spalte 0 des Datasets befinden sich lauter Datumswerte (13.01.2008 usw......)

    wie kann ich dem der DGV (beim laden der Werte) beibringen das es sich hierbei um ein Datum handelt?

    Problem ist ja prinzipiell das die DGV nicht richtig sortiert wird
    ja sicher wenn ich im Spaltenheader klicke wird sortiert - nur leider falsch

    30.01.2012
    31.01.2012
    02.02.2012
    29.01.2012

    hier sieht man warum

    Leider handelt es sich in diesem Beispiel nicht um eine Datengebundene DGV

    Ich fülle meine DGV ja so:

    VB.NET-Quellcode

    1. DataSet1.Tables("DataTable1").ReadXml(Path.GetDirectoryName(Application.ExecutablePath) & "\Daten\" & "Daten.xml")

    und dann hätt ich mir das gedacht:

    VB.NET-Quellcode

    1. DataGridView1.Columns(1).ValueType = GetType(Date)
    2. DataSet1.Tables("DataTable1").ReadXml(Path.GetDirectoryName(Application.ExecutablePath) & "\Daten\" & "Daten.xml")

    geht aber auch nicht
    Dann solltest Du Dir für die entsprechende Spalte einen eigenen Sortierer schreiben.
    Für ein ListView habe ich das hier im Forum schon gesehen, beim DGV weiß ich nicht.
    Auf jeden Fall findest Du etwas dazu.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also jetzt musst du mir sagen was ein "ordentlich gebundenes Grid" ist!?

    ich habe auf meiner Form:
    1. DGV
    2. Dataset
    3. Datatabel
    4. Databindingsource

    meine DGV steht unter Datasource: "DataTable1BindingSource"
    Das ist doch ordentlich oder sehe ich das falsch?
    Also jetzt musst du mir sagen was ein "ordentlich gebundenes Grid" ist!?
    Mit ordentlich gebunden meine ich typisiertes Dataset.
    Das richteste dir im Dataset-Designer ein, und stellst die Datumspalte sinnigerweise als DateTime ein, denn sonst ist die vom Typ String, und Strings haben halt eine andere Sortierreihenfolge als Datumse.

    Ordentlich gebunden erkennt man auch im Form-Designer, da werden im DGV nämlich die Spaltenköpfe bereits zur DesignZeit angezeigt, wie sie direkt aus der DataTable sich ableiten.
    Und da kann man dann auch Spaltenbreiten einstellen, unerwünschte Spalten ausnehmen und sowas.
    Bilder
    • DesignerAnsicht gebundenes DGV.Png

      10,55 kB, 467×187, 137 mal angesehen

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

    Danke habs gefunden!
    Leider werden die Daten die bereits in eine xml Datei geschrieben (als String) worden sind nicht mehr geladen - da sich das Format geändert hatt.

    Gibts ne möglichkeit diese wiederherzustellen?

    Format in der XML Data Typ: System.String:

    <Datum>03.01.2012</Datum>

    Format in der XML Data Typ: System.DateTime:
    <Datum>2012-02-06T00:00:00+01:00</Datum>
    Jo, ich sag gelegentlich: Xml als solches ist ein sehr unpraktisches Format, um Daten abzuspeichern.
    Weil da muß man jedesmal jeden einzelnen Tag betrachten, und eine geeignete Konvertierung schreiben, und dann kanns immer noch sein, dass auf einem Rechner mit zB englischsprachiger Kultur die Konvertierung failt.

    Vielleicht hast du ja glück, und dein Xml ist durch Serialisierung entstanden, und du kennst den Typen, aus dem es serialisiert wurde.

    Ansonsten halt ein vernünftiges Dataset anlegen, das Xml einmal einlesen, jeden Datenwert mit DateTime.Parse konvertieren, damit das Dataset befüllen, und dann mit Dataset.WriteXml abspeichern, damit das Theater mal ein Ende hat.

    Also mein Dataset ist Typisiert
    Da hast du dir aber nicht viel Mühe mit gegeben, wenn dein Dataset "Dataset1" heist, und eine DataTable namens "DataTable1" aufweist. ;)

    Na gut, du kanntest den Dataset-Designer ja garnet.
    Wie hast du dann aber ein typisiertes Dataset ühaupt erstellen können?

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

    natürlich kannte ich den Dataset-Designer - mit dem hab ichs ja angelegt!

    Vielleicht hast du ja glück, und dein Xml ist durch Serialisierung
    entstanden, und du kennst den Typen, aus dem es serialisiert wurde.

    Ansonsten halt ein vernünftiges Dataset anlegen, das Xml einmal
    einlesen, jeden Datenwert mit DateTime.Parse konvertieren, damit das
    Dataset befüllen, und dann mit Dataset.WriteXml abspeichern, damit das
    Theater mal ein Ende hat.

    verstehe ich leider nicht! Kannst darauf näher eingehen?
    Da hast du dir aber nicht viel Mühe mit gegeben, wenn dein Dataset
    "Dataset1" heist, und eine DataTable namens "DataTable1" aufweist. ;)
    Da ich nur 1 Dataset habe und 2 Datatable's - dachte ich mir, es ist wurscht

    vierkant schrieb:

    verstehe ich leider nicht
    verstehe nicht, wasses da nicht zu verstehen gibt.
    Ein Dataset anlegen kannste.
    Ist dir der Befehl

    VB.NET-Quellcode

    1. Dataset1.DataTable1.AddDataTable1Row(values)
    nicht bekannt?
    Sowas wird dir ja generiert.
    Und deshalb ist die Benamung suboptimal, bei einer sinnvolleren Benamung würden auch plausiblerer Code generiert, vlt.

    VB.NET-Quellcode

    1. MessDatenDts.Messzeiten.AddMesszeitenRow(values)
    oder sowas.