Autor
|
Thema: DataGridView / Spalten Sortierung Nummerisch (1698 / mal gelesen)
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Dirk.B](/foren/ubb/pmimages/gbu.gif) Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 06. Feb. 2019 10:25 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Guten Morgen Zusammen, Ich befüll ein DataGridView mit Werten aus einer SQL-DB / Tabelle. In der Spalte "BA-Nr." stehen ausschließlich Zahlen 1 - ... 1000 + X. Diese werden so aufgelistet: 1 10 120 1000 2 20 ... etc.
Wie bekomme ich es hin, dass diese nach der richtigen Reihenfolge angezeigt werden: 1 2 3 4 ... 10 ... 100 ... 200 ... 1000 ... etc. Code:
'--START--Grundeinstellungen im DataGridView--------------------------- DGV_BA.DataSource = Nothing With DGV_BA '--Spaltenköpfe---------------------------------------------------- .Columns.Clear() .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing .ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Sunken .ColumnHeadersHeight = 22 .ColumnHeadersDefaultCellStyle.Font = New Drawing.Font("Arial", 8) '//;; '--Zeilen---------------------------------------------------------- .Rows.Clear() .RowHeadersVisible = False .RowsDefaultCellStyle.WrapMode = DataGridViewTriState.False .RowsDefaultCellStyle.BackColor = Drawing.Color.White .AlternatingRowsDefaultCellStyle.BackColor = Drawing.Color.Beige .RowsDefaultCellStyle.Font = New Drawing.Font("Arial", 8) '//;; '------------------------------------------------------------------ .SelectionMode = DataGridViewSelectionMode.FullRowSelect .MultiSelect = False .AllowUserToAddRows = False .AllowUserToDeleteRows = False .AllowUserToResizeColumns = False .AllowUserToResizeRows = False .ReadOnly = True '//;; End With '--ENDE--Grundeinstellungen im DataGridView---------------------------- '--Anpassung / Spaltennamen + Spaltenbreiten--------------------------- With DGV_BA '--Hinzufügen der CheckBox in Spalte 1----------------------------- .Columns.Insert(0, DGV_ChkBox) .Columns(0).Width = 25 .Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable .Columns(0).DefaultCellStyle.BackColor = Color.Gray '--Hinzufügen der Darstellung für den BA-Status-------------------- .Columns.Insert(1, BA_Status) .Columns(1).HeaderText = "BA-Status" .Columns(1).Width = 110 .Columns(1).SortMode = DataGridViewColumnSortMode.NotSortable .Columns(1).DefaultCellStyle.BackColor = Color.Gray '------------------------------------------------------------------ .Columns(2).HeaderText = "Projekt-Nr." .Columns(2).Width = 58 .Columns(2).SortMode = DataGridViewColumnSortMode.NotSortable .Columns(2).DefaultCellStyle.BackColor = Color.Gray '------------------------------------------------------------------ '//;; In dieser Spalte soll die Sortierung erfolgen ///////////// '//;;1 / 10 / 20 ... 80 ... 100 ... 200 ... 1000 etc. ///////////// .Columns(3).HeaderText = "BA-Nr." .Columns(3).ValueType = GetType(Integer) .Columns(3).Width = 52 .Columns(3).SortMode = DataGridViewColumnSortMode.NotSortable .Columns(3).DefaultCellStyle.BackColor = Color.Gray '------------------------------------------------------------------ .Columns(4).HeaderText = "LV Pos.-Nr." .Columns(4).Width = 70 .Columns(4).SortMode = DataGridViewColumnSortMode.NotSortable .Columns(4).DefaultCellStyle.BackColor = Color.Gray '------------------------------------------------------------------
Vielen Dank für eure Hilfe.
------------------ Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für mseufert](/foren/ubb/pmimages/gbu.gif) Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2212 3D Printer Prusa MK2 S
|
erstellt am: 06. Feb. 2019 14:35 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für Dirk.B
Hallo Dirk, das geht mit einer eigenen Klasse, die IComparer implementiert. Beispiel findest Du hier Gruß, Michael ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit selt'ner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für HenryV](/foren/ubb/pmimages/gbu.gif) Beiträge: 778 Registriert: 18.05.2005 SolidWorks 2020 x64 SP3.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 21H1 Microsoft Office 365 ProPlus Microsoft Visual Studio Enterprise 2022
|
erstellt am: 06. Feb. 2019 16:31 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für Dirk.B
Hallo Dirk Ich nehme an das dein DataGridView ungebunden ist. Dann kannst du das SortCompare-Event des DataGridViews verwenden um das Sortierverhalten zu ändern. Code: Private Sub DGV_BA_SortCompare(sender As Object, e As System.Windows.Forms.DataGridViewSortCompareEventArgs) Handles DGV_BA.SortCompare 'Suppose your interested column has index 3 If e.Column.Index = 3 Then e.SortResult = Integer.Parse(e.CellValue1.ToString()).CompareTo(Integer.Parse(e.CellValue2.ToString())) 'pass by the default sorting e.Handled = True End If End Sub
Andernfalls (bei gebundenem DataGridView) solltest du den Spaltentyp der DataTable ändern. Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Dirk.B](/foren/ubb/pmimages/gbu.gif) Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 11. Feb. 2019 15:16 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Hallo Michael! Hallo Andreas! Danke für eure Tipps. @Andreas Entscheidend war der Hinweis auf den Spaltentyp des DataTables.
Code:
.Columns(1).DataType = Type.GetType("System.Int32")
Nun funktioniert es wie gewünscht. ------------------ Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |