Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  VBasic / vb.net / vbs / wsh
  DataGridView / Spalten Sortierung Nummerisch

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  DataGridView / Spalten Sortierung Nummerisch (1539 / mal gelesen)
Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


Sehen Sie sich das Profil von Dirk.B an!   Senden Sie eine Private Message an Dirk.B  Schreiben Sie einen Gästebucheintrag für Dirk.B

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 06. Feb. 2019 10:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Abb_01.JPG


Abb_02.JPG


Abb_03.JPG

 
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


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dirk.B 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dirk.B 10 Unities + Antwort hilfreich

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



Technischer Systemplaner (m/w/d) Versorgungstechnik

VIVAWEST ist einer der führenden Wohnungsanbieter in NRW und bewirtschaftet rund 120.000 Wohnungen in ca. 100 Kommunen an Rhein und Ruhr. Für den Bereich Bestandstechnik, Fachbereich Technische Gebäudeausrüstung, suchen wir zum nächstmöglichen Zeitpunkt einen Mitarbeiter.


  • Gewährleistung der klima- und unternehmensstrategiekonformen Planung einschließlich der Dokumentation von ...
Anzeige ansehenGebäude-, Versorgungs-, Sicherheitstechnik
Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


Sehen Sie sich das Profil von Dirk.B an!   Senden Sie eine Private Message an Dirk.B  Schreiben Sie einen Gästebucheintrag für Dirk.B

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 11. Feb. 2019 15:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz