【问题标题】:Abort sorting in DataGridView when row has been edited编辑行时中止 DataGridView 中的排序
【发布时间】:2010-12-02 00:43:56
【问题描述】:

我有 2 列的 DataGridView。首先的 SortMode 设置为 Automatic。

在这个网格中有很多行,当我改变行中的值时,例如从 xyz 到 abc,我仍然在该行所在的位置。编辑的行跳转到顶部。

我想中止这种自动排序,我想通过左键单击列来调用​​排序。是

我找到了一些解决方案(下面的代码 + 我将 SortMode 设置为 Programmatically),但我的行仍在跳跃:/ 有没有人解决这个问题?

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 此解决方案不起作用。在开始时,我为每一列都设置了不可排序。现在在 dataGridView1_ColumnHeaderMouseClick 开始时我添加了: newColumn.SortMode = DataGridViewColumnSortMode.Programmatic; .当然,我已经添加了你的活动,但还是一样。
    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多