2017-12-21 5 views
0

数値データを入力するDataGridViewがあります。また、Row HeaderCellプロパティに行番号を表示するコードを記述することもできました。このために私は次のコードを使用しています:DatagridView列をソートした後に正しい行番号を表示する[C#WinForm]

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

各列のソート能力も有効になっているが、私は列HeaderCell、適切にその列の並べ(ソート)内のデータをクリックします。しかし、行番号がソートされていない元のデータを反映するように変更されていない場合でも、ソート後の問題です。たとえば、次のように

データをDataGridViewの上にロードされている場合、それは次のようになります。

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

私はDataGridViewのは、このようになりますソートするのCol1をクリックした後:

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

しかし、私

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

どのように私はこれを簡単に達成することができますか?

答えて

0

データソースにフィールド(rownumber)を追加する必要があります。 ソート後、このようなことができます。

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

これは次の場合に機能します。** 1)** DataBindingCompleteで行います。 ** 2)** 'DataGridView1.Columns [" rownumber "]を設定する。Visible = false' ** 3)**' row.HeaderCell.Value = row.Cells ["rownumber"]を設定する。 ' – OhBeWise

+0

それは正しい。 "値"を忘れた... –

関連する問題