Laden...

DataTable sortiert ab Nummer 10 nicht mehr numerisch

Erstellt von DjBepy vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.627 Views
D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 7 Jahren
DataTable sortiert ab Nummer 10 nicht mehr numerisch

Hallo 😃

Ich habe eine Liste von Mitarbeitern mit Angaben, an welchen Tagen die da und an welchen die nicht da sind in einer DataTable gespeichert. Diese Liste benötige ich um den Dienst-Plan zu erstellen.

Sobald ein Mitarbeiter für den Dienst gesetzt wurde, soll er "ans Ende" der Liste gesetzt werden, damit erst alle Anderen wieder dran kommen. Dafür habe ich ein Column "Ticker" der mit jedem Eintrag hoch gezählt wird

Sobald einer ausgewählt wird, wird der Ticker wieder um eins erhöht und in den Ticker-Eintrag des ausgewählten Mitarbeiter geschrieben. Danach wird die Liste mit

dtHotline.DefaultView.Sort = "Ticker ASC";
                                dtHotline = dtHotline.DefaultView.ToTable();

wieder neu sortiert.

Das funktioniert auch genau so lange, bis der Wert im Feld Ticker die 10 erreicht. Danach bleibt der Eintrag mit dem Ticker 10 & aufwärts immer an erster Stelle in der DataTable, so als wenn er nicht nummerisch sortiert, sondern die 1 der 10 halt kleiner als die 9 des anderen Eintrag ist.

Ich hatte ursprünglich über die Anzahl sortiert, jedoch wird ein Mitarbeiter nach dem Urlaub dann erst mal x Mal eingesetzt, bis er auf dem gleichen Stand ist wie der Rest und das ist nicht gewollt.

Jemand eine Idee? Ich bin auch für andere (funktionierende) Lösungsansätze offen 😃

*Machts gut und danke für den vielen Fisch*

C
2.121 Beiträge seit 2010
vor 7 Jahren

Datentyp String statt Zahl?

D
DjBepy Themenstarter:in
209 Beiträge seit 2006
vor 7 Jahren

Die Ticker-Variable selber ist int & wird dem Feld im DataTable direkt zugewiesen.

Ich habe gerade Mal den Start Wert des Tickers auf 1000 gesetzt & jetzt sortiert er "korrekt".

Kann ich dem Feld irgendwie explizit sagen, dass es ein INT-Feld ist?

*Machts gut und danke für den vielen Fisch*

O
1 Beiträge seit 2016
vor 7 Jahren

Hi DjBepy,

Du kannst einer DataColumn in der Property DataType den Typ "int" zuweisen. Dann funktioniert die Sortierung.

            DataTable table=new DataTable();

            DataColumn columnId=new DataColumn("ID");
            
            //WICHTIG für Sortierung
            columnId.DataType = typeof (int);

            //Die Spalte ID muss als DataColumn übergeben werden, 
            //da vorher der DataType festgelegt werden musste.
            table.Columns.Add(columnId);
            table.Columns.Add("Text");

            for (int i = 0; i < 12; i++)
            {
                DataRow row = table.NewRow();
                row[0] = i;
                row[1] = "Text" + i;
                table.Rows.Add(row);
            }

            table.DefaultView.Sort = "ID ASC";
            DataTable tableSorted = table.DefaultView.ToTable();

            for (int i = 0; i < 12; i++)
            {
                var id = tableSorted.Rows[i][0].ToString();
                var text = tableSorted.Rows[i][1].ToString();

                Console.WriteLine(id + ": " + text);

            }

            Console.Read();