Entwickler-Ecke

WinForms - Datagridview soll aufsteigend sortieren


tomycat - Mi 01.03.17 20:46
Titel: Datagridview soll aufsteigend sortieren
hallo,
in Datagridview steht in Spalte A:
Zeile 1: 111,11
Zeile 2: 11,11
Zeile 3: 9,99

Was muss ich tun, wenn ich auf den Header von der Spalte A anklicke, dass alles nach dem Wert aufsteigend sortiert wird?


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mi 01.03.2017 um 20:01


Delete - Mi 01.03.17 21:24

- Nachträglich durch die Entwickler-Ecke gelöscht -


Th69 - Mi 01.03.17 21:52

Hallo tomycat,

du möchtest nach den Zahlenwerten sortieren und nicht alphabetisch, oder?
Ist das DataGridView datengebunden (DataSource = ...)? Und hast du den Datentyp der Spalte richtig gesetzt:

C#-Quelltext
1:
column.ValueType = typeof(double);                    
?


tomycat - Do 02.03.17 20:39

thx all,
genau, nicht alphabetisch. Ich sende einen SQL Befehl an meine Datenbank und die Antwort wird in einer Tabelle dargestellt. Spalte Nummer 5 sind Zahlen.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
schnipp
   NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
   
                ds_auftraguebersicht.Reset();       
                da.Fill(ds_auftraguebersicht);           
                dt_auftraguebersicht = ds_auftraguebersicht.Tables[0];      
                dataGridView2.DataSource = dt_auftraguebersicht;             
                conn.Close();

                if (Form1.kunde != "mayer")
                {
                    auftrag_dataviewii();
                }
                else
                {
                    dataGridView2.Columns[0].Width = 40;
                    dataGridView2.Columns[1].Width = 70;
                    dataGridView2.Columns[2].Width = 70;  //renummer
                    dataGridView2.Columns[3].Width = 70;
                    dataGridView2.Columns[4].Width = 80;   //tel vorkasse
                    dataGridView2.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                    dataGridView2.Columns[5].Width = 80;      //tel 2 zahlungsart
                    dataGridView2.Columns[5].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                    dataGridView2.Columns[5].ValueType = typeof(double);  //bringt leider keine veränderung
                    dataGridView2.Columns[6].Width = 100;        //
                    dataGridView2.Columns[7].Width = 130//bez
schnipp


Ralf Jansen - Do 02.03.17 21:32

Kann ich nicht nachvollziehen.
So gerade eine frische DataGridView aus der ToolBox gefüllt und ich kann korrekt sortieren.


C#-Quelltext
1:
2:
3:
4:
Random rnd = new Random(DateTime.Now.Millisecond);
DataTable table = new DataTable();            
table.Columns.Add(new DataColumn() { ColumnName = "Zahlungsart", DataType = typeof(double) });
dataGridView1.DataSource = Enumerable.Range(1,10).Select(x => { var row = table.NewRow(); row["Zahlungsart"] = rnd.NextDouble(); return row; }).CopyToDataTable<DataRow>();


tomycat - Fr 03.03.17 20:43

thx,
ich glaube wir reden aneinander vorbei.
Ich klicke auf den Header (Nummer 5) Dann soll diese Spalte nach Zahlen sortiert werden.


Ralf Jansen - Fr 03.03.17 21:17

Zitat:
Ich klicke auf den Header (Nummer 5) Dann soll diese Spalte nach Zahlen sortiert werden.


Genau das kann das Grid standardmäßig auch in meinem gezeigten Code. Zum testen habe ich halt nur 1 Spalte benutzt.

Wenn dein Grid das nicht kann hast du dir deine Spalten irgendwie verbastelt. Aber ein Standardgrid mit Standardspalten mit Standardeinstellungen kann das einfach.