时间:2010-12-02 00:43:57

标签: c# asp.net datagridview .net-2.0

我有2列DataGridView。 SortMode of first设置为Automatic。

在这个网格中有很多行,当我在行中更改值时,例如从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;    
    }
}

1 个答案:

答案 0 :(得分:0)

为什么不在捕获DataGridView的编辑事件时禁用排序?

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

然后你可以通过恢复此行为来恢复排序(通过在列的RightClick事件或任何上下文菜单项或其他内容中再次恢复它)