DataTable sortieren



  • Hallo,
    ich habe einen DataTable mit mehreren Spalten, unter anderem mit einer Datumspalte (DataTime).
    Nun lese ich den DataTable mit folgender Zeile aus:

    for each (DataRow^ dr in _dt->Rows)
    {
    ...
    ...
    ....
    }
    

    Nun möchte ich aber gerne das die Zeilen vorher nach Datum sortiert werden.
    Kann mir jemand sagen wie das mit einem DataTable geht?
    Danke im vorraus!



  • DataTable^ myTable = gcnew DataTable();
    DataColumn" myDateColumn = gcnew DataColumn(L"Datum");
    myDateColumn->DataType = System::Type::GetType(L"System.DateTime");
    myTable->Columns->Add(myDateColumn);
    
    //jetzt wird sortiert, dass Ergebnis aber als Array von DataRows wiedergegeben
    //Kriterium: Datum - Spalte, absteigend
    array<DataRow^> rowsSorted = myTable->Select("",L"Datum DESC");
    
    //das gibst du dann an deine Tabelle zurück
    myTable->Rows = rowsSorted;
    


  • Hi,

    erstmal danke für deine ausfühliche Antwort!
    Doch ich bekomme folgenden Fehler:

    Fehler 1 error C2039: 'set': Ist kein Element von 'System::Data::DataTable::Rows' c:\dokumente und einstellungen\foxy\eigene dateien\visual studio 2005\projects\bankroller\bankroller\Form1.h 2595

    Hier ist der Code:

    // Den DataTable nach Datum sortieren
    		//Kriterium: Datum - Spalte, absteigend
    		array<DataRow^>^ rowsSorted = _dt->Select("", L"Date");
    
    		//das gibst du dann an deine Tabelle zurück
    		_dt->Rows = rowsSorted;
    


  • Okay, dann lösch mal das

    _dt->Rows = rowsSorted;
    

    und gib die Tabelle einfach mal aus. Ich weiß jetzt nicht genau, ob das sortieren das DataRow-Arrays auch sofort in die Tabelle übernommen wird.


Anmelden zum Antworten