私は並べ替えることを探しているdatagridviewがあります。 1つの列は2〜3桁の長さの「ページ」になります。私は両方でデータをソートしようとしている1〜3の数である「アイテム」と呼ばれる別の列を持って、ページの最初にしてアイテム:dataGridViewでセカンダリカラムをソートするにはどうすればよいですか?
は(例)
Page 01, item 1
Page 01, item 2
Page 02, item 2
Page 02, item 3
私は並べ替えることを探しているdatagridviewがあります。 1つの列は2〜3桁の長さの「ページ」になります。私は両方でデータをソートしようとしている1〜3の数である「アイテム」と呼ばれる別の列を持って、ページの最初にしてアイテム:dataGridViewでセカンダリカラムをソートするにはどうすればよいですか?
は(例)
Page 01, item 1
Page 01, item 2
Page 02, item 2
Page 02, item 3
私はこれを知っています投稿は少し古いですが、私はここで答えを探しに来て、他の誰も反応しなかったので、私はここに1つ置くと思った。
最初にする必要があるのは、ヘッダーの自動並べ替えを無効にすることです。私は私が実際に見つかったdisableSort方法は、プログラム的
private void disableSort()
{
foreach(DataGridViewColumn dc in dataGridView2.Columns)
{
dc.SortMode = DataGridViewColumnSortMode.Programmatic;
}
}
にソートモードを設定することにより、最高の作品を呼び出しDGVにデータソースをバインドした後、それから私は、DataGridにCellMouseDownイベントに
private void dataGridView2_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex == -1)
{
int rIdx = dataGridView2.SelectedCells[0].RowIndex;
seq = dataGridView2.Rows[rIdx].Cells["SequenceNo"].Value.ToString();
int selectedColumnIdx = e.ColumnIndex;
ListSortDirection direction;
if (dataGridView2.SortedColumn == dataGridView2.Columns[selectedColumnIdx])
{
if (dataGridView2.SortOrder == SortOrder.Ascending)
{
direction = ListSortDirection.Descending;
}
else
{
direction = ListSortDirection.Ascending;
}
}
else
{
direction = ListSortDirection.Ascending;
}
this.dataGridView2.Sort(this.dataGridView2.Columns["SequenceNo"], ListSortDirection.Ascending);
this.dataGridView2.Sort(this.dataGridView2.Columns[selectedColumnIdx], direction);
}
を縛らあなたがColumnHeaderMouseClickイベントを通過する場合、私のRowIndexチェックをスキップすることができます
私はセカンダリソートとして使用しています(ユーザがソートする列を選択した後、sequenceNumberでソートしたい)。ユーザーがどの列をソートしているのか、現在のソート順はどうなっているのかを把握し、その逆をとり、セカンダリ列を最初にソートし、プライマリをソートします。