2010-12-02 6 views
0

2列のDataGridViewがあります。最初のSortModeは自動に設定されています。このグリッドで行が編集されたときにDataGridViewで並べ替えを中止する

ロット行であり、そして私は、この行がWAS位置に静止xyzからABCに、例えば、行の値を変更したとき。編集された行が先頭にジャンプします。

私はこの自動ソートを中止したいと私は列に左クリックでソートを呼び出したいです。

ことが、私は(+下記のコード私はプログラム的に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; 
} 

それからちょうどこのソリューションは動作しません

+0

(あなたの列または任意のコンテキストメニュー項目または他の右クリックイベントで再びそれを復元することによって)、この動作を元に戻すことでソートを復元することができます。私はすべての列をソートできないように設定しました。今私はdataGridView1_ColumnHeaderMouseClick開始時に追加:newColumn.SortMode = DataGridViewColumnSortMode.Programmatic; 。そして、私はあなたのイベントを追加しましたが、まだ同じです。 – user278618

関連する問題