2017-12-21 2 views
0

Ich habe eine DataGridView, wo ich numerische Daten befüllen. Ich habe es auch geschafft, den Code zu schreiben, um die Zeilennummer in der Zeile HeaderCell-Eigenschaft anzuzeigen. Dazu verwende ich den folgenden Code:Zeigen Sie die richtige Zeilennummer nach dem Sortieren der DatagridView-Spalte [C# WinForm]

foreach(DataGridViewRow row in datagridview.Rows) 
     row.HeaderCell.Value = (row.Index + 1).ToString(); 

Die Sorting Fähigkeit jeder Spalte ebenfalls aktiviert ist und wenn ich auf die Spalte HeaderCell, werden die Daten in dieser Spalte anordnet (sortiert) richtig. Das Problem tritt jedoch auch nach dem Sortieren der Zeilennummer nicht auf, um die ursprünglichen unsortierten Daten wiederzugeben. Zum Beispiel:

Wenn die Daten auf dem Datagridview geladen sieht es etwa so aus:

| Col1 | Col2 
---------------- 
1| 5 | num1 
2| 2 | num2 
3| 7 | num3 

Nachdem ich auf Col1 klicken Sie auf die Datagridview sieht wie folgt zu sortieren:

| Col1 >| Col2 
---------------- 
1| 2 | num2 
2| 5 | num1 
3| 7 | num3 

Aber ich will es so sein:

| Col1 >| Col2 
---------------- 
2| 2 | num2 
1| 5 | num1 
3| 7 | num3 

Irgendeine Idee, wie ich das leicht erreichen kann?

Antwort

0

Sie sollten Ihrer Datenquelle ein Feld (Zeilennummer) hinzufügen. Nach dem Sortieren können Sie so etwas tun.

foreach(DataGridViewRow row in datagridview.Rows) 
    row.HeaderCell.Value = row["rownumber"].ToString(); 
+1

Dies funktioniert, wenn: ** 1) ** Do it in 'DataBindingComplete'. ** 2) ** Setze 'dataGridView1.Columns [" Zeilenzahl "]. Visible = false' ** 3) ** Setze' row.HeaderCell.Value = row.Cells ["Zeilennummer"]. Value.ToString(); ' – OhBeWise

+0

Das ist richtig. Habe den ".Wert" vergessen ... –

Verwandte Themen