【问题标题】:Remove Uncommitted New Rows Of DGV删除未提交的 DGV 新行
【发布时间】:2011-03-16 14:39:08
【问题描述】:

我有未绑定的 DGV,我想在 DGV Leave EventHandler 上删除不需要的最后一行。怎么办?

我知道通过以编程方式将新行添加到 dgv 并设置属性 AllowUserToAddRows = false。

但我的问题是:是否可以在不设置属性 AllowUserToAddRows = false 的情况下删除 DGV 的最后一行?。

是否可以删除未提交的 DGV 新行?

【问题讨论】:

    标签: c# datagridview


    【解决方案1】:

    将 DataGridView 的 AllowUserToAddRows 属性设置为 False

    但是,您必须提供一种允许用户输入新行的方法。例如,当用户双击 DataGridView 时,您可以将 AllowUserToAddRows 设置为 true。然后当他们完成编辑时,您将值设置回 False。

    添加新行:

    假设您的 DataGridView 称为 MyDataGridView,并且您有一个名为 BtnAddRow 的按钮,当单击该按钮时,它会向您的 DataGridView 添加一个新行。

    private void btnAddRow_Click(object sender, RoutedEventArgs e)
    {
           // Add an empty row
           MyDataGridView.Rows.Add();
    }
    

    或者,您可以只处理 DataGridView OnDoubleClick 事件,您可以在其中调用 MyDataGridView.Rows.Add() 来添加新行。

    【讨论】:

    • @Jean-Louise,好吧,您如何向 dgv 添加行以进行数据输入?
    • 假设您有一个名为 MyDataGridView 的 DataGridView。您可以像这样以编程方式向其中添加新行:MyDataGridView.Rows.Add()
    • @Jean-Louis,是的,您是对的,但认为这是在浪费用户的时间。如果您面前有完整的 DGV,那为什么还要做不必要的额外工作?我想知道是否可以在不设置 allowUserToAddRows = False 的情况下删除最后一行
    • @mahesh:由于单击按钮会打扰您,因此只需将其替换为例如双击 DataGridView 即可添加新行。这是一个想法,您可以适应适合您要求的东西
    • @Jean-Louis,myup 投票支持您的正确指导,但请确保这不是我的问题答案我只想知道如果没有设置 allowUserToAddRows=false 是否有可能?
    【解决方案2】:

    如果您的 DataGridView 绑定到 DataSet,则可以删除当前行:

    If DataGridView1.CurrentRow.IsNewRow Then
        MyDataSet1.MyTable.Rows(DataGridView1.CurrentRow.Index).RejectChanges()
    Else
        DataGridView1.Rows.Remove(DataGridView1.CurrentRow)
    End If
    

    【讨论】:

      【解决方案3】:

      您可以通过设置 AllowUserToAddRows = false 来删除数据网格视图中未提交的新行

      grid.AllowUserToAddRows = false;

      【讨论】:

        【解决方案4】:

        我想删除 DGV 离开事件的最后一行。

        只需在DataGridView.Leave 事件上附加一个处理程序并使用此代码:

        private void MyHandler(object sender, EventArgs e)
        {
             int count = dgv.Rows.Count;
             dgv.Rows.RemoveAt(count - 1);
        }
        

        编辑:您指的是出现在 DataGridView 中的最后一个空白行吗?如果是,则允许用户创建新行。要禁用它,请遵循 Jean-Luis 将 AllowUserToAddRows 属性设置为 false 的建议。

        【讨论】:

        • 它会抛出 InvalidOperation 异常,例如“无法删除未提交的新行。
        【解决方案5】:

        我在从DataGridView 中删除“最后”行时遇到了同样的问题。我是这样解决的。

        grid.Rows.RemoveAt(grid.Rows.Count - 2);
        

        它会跳过最后一行,即未提交的新行,如果您尝试将其删除,则会引发异常。

        要删除多行:

        while (new_count < grid.Rows.Count - 1)
        {
            grid.Rows.RemoveAt(grid.Rows.Count - 2);
        }
        

        因此,无需设置AllowUserToAddRows = false

        【讨论】:

          猜你喜欢
          • 2021-10-28
          • 2014-09-21
          • 1970-01-01
          • 1970-01-01
          • 2012-08-11
          • 1970-01-01
          • 2020-07-18
          • 1970-01-01
          • 2012-01-01
          相关资源
          最近更新 更多