0
我有一個datagridview,我正在尋找排序。一列是「Page」,這是一個2-3位數字的長度。我有一個名爲「項」的另一列是數字1和3之間,我試圖通過這兩個數據進行排序,頁面,然後再項:如何排序dataGridView中的輔助列?
(例如)
Page 01, item 1
Page 01, item 2
Page 02, item 2
Page 02, item 3
我有一個datagridview,我正在尋找排序。一列是「Page」,這是一個2-3位數字的長度。我有一個名爲「項」的另一列是數字1和3之間,我試圖通過這兩個數據進行排序,頁面,然後再項:如何排序dataGridView中的輔助列?
(例如)
Page 01, item 1
Page 01, item 2
Page 02, item 2
Page 02, item 3
我知道這帖子有點老了,但我來到這裏尋找答案,沒有人迴應,所以我想我會在這裏放一個。
您需要做的第一件事是禁用標題上的自動排序。之後,我的數據源綁定到DGV我稱之爲disableSort方法,我居然發現最適合通過設置排序模式綱領性
private void disableSort()
{
foreach(DataGridViewColumn dc in dataGridView2.Columns)
{
dc.SortMode = DataGridViewColumnSortMode.Programmatic;
}
}
然後我綁到CellMouseDown事件DataGrid上
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作爲我的第二種排序(在用戶選擇一個列進行排序後,他們希望它通過sequenceNumber排序)。只要找出用戶正在排序的列,它當前的排序順序是什麼,採取相反的操作,然後先排序次列,然後再排序。