2010-12-02 44 views
0

我有DataGridView有2列。 First的SortMode被設置爲Automatic。當行被編輯時在DataGridView中異常排序

在這個網格是很多行,當我改變行的值,例如從xyz到abc我仍然在這個行的位置WAS。被編輯的行跳轉到頂部。

我想中止這種自動排序,我希望通過左鍵單擊列進行呼叫排序。是

我發現了一些解決方案(下面的代碼+我設置SortMode編程),但我的行仍然跳躍:/有任何解決方案來解決這個問題?

private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     DataGridViewColumn newColumn = 
     dataGridView1.Columns[e.ColumnIndex]; 

     SortOrder direction; 
     if (dataGridView1.SortOrder == SortOrder.Ascending) 
     { 
      dataGridView1.Sort(newColumn, 
      ListSortDirection.Ascending); 
      direction = SortOrder.Ascending; 
     } 
     else 
     { 
      dataGridView1.Sort(newColumn, 
      ListSortDirection.Descending); 
      direction = SortOrder.Descending; 
     } 

     newColumn.HeaderCell.SortGlyphDirection = direction;  
    } 
} 

回答

0

爲什麼不在捕獲DataGridView的編輯事件時禁用排序?

private void dataGridView1_CellBeginEdit(object sender, 
DataGridViewCellCancelEventArgs e) 
{ 
    foreach (DataGridViewColumn column in dataGridView1.Columns) 
     column.SortMode = DataGridViewColumnSortMode.NotSortable; 
} 

然後,你可以只是恢復這種行爲(通過在列或任何上下文菜單項或其他的rightClick事件再次恢復它)恢復排序

+0

此解決方案不起作用。在開始時,我爲每列不可排序。現在在dataGridView1_ColumnHeaderMouseClick在開始我添加:newColumn.SortMode = DataGridViewColumnSortMode.Programmatic; 。我已經添加了你的活動,但仍然一樣。 – user278618 2010-12-05 23:38:03