2010-12-02 4 views
0

Ich habe DataGridView mit 2 Spalten. SortMode of first ist auf Automatic eingestellt.Sortierung in DataGridView abbrechen, wenn Zeile bearbeitet wurde

In diesem Raster ist eine Menge Zeilen, und wenn ich Wert in der Zeile ändern, zum Beispiel von xyz zu abc, ich noch in der Position, wo diese Zeile war. Die bearbeitete Zeile springt nach oben.

Ich möchte diese automatische Sortierung abbrechen und ich möchte die Sortierung durch Klicken auf die linke Spalte aufrufen. Be

Ich habe eine Lösung gefunden (Code unten + Ich setze SortMode auf Programmatically), aber meine Zeile springt immer noch:/Hat jemand Lösung, um mit diesem Problem umzugehen?

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;  
    } 
} 

Antwort

0

Warum Sie nicht nur die Sortierung deaktivieren, wenn das Ereignis bearbeitet Ihre Datagridview erfassen?

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

Dann könnten Sie einfach die Sortierung wiederherstellen, indem dieses Verhalten zurückkehrt (indem Sie es erneut in der Rightclick Event Ihrer Spalte oder was auch immer Kontextmenüpunkt oder eine andere Wiederherstellung)

+0

Diese Lösung funktioniert nicht. Beim Start stellte ich für jede Spalte nicht sortierbar ein. Jetzt in dataGridView1_ColumnHeaderMouseClick beim Start habe ich hinzugefügt: newColumn.SortMode = DataGridViewColumnSortMode.Programmatic; . Und natürlich habe ich deine Veranstaltung hinzugefügt, und immer noch das gleiche. – user278618

Verwandte Themen