如何使用 C# 清除数据网格视图中的行

本文关键字:视图 网格 数据网 何使用 清除 数据 | 更新日期: 2023-09-27 17:57:57

跟随此行中的错误。

datagridview1.Rows.Clear()

但是这一行给出了错误:

无法清除此列表。

如何使用 C# 清除数据网格视图中的行

当我尝试清除 DataGridView 的数据源时,我也遇到了类似的问题,因为我将它绑定到数据表:

DataTable DT = ... ; // fill it
datagridview1.DataSource = DT;

当我尝试稍后使用以下代码清除它的行时:

datagridview1.DataSource = null

我收到此错误:

ERROR: Object reference not set to an instance of an object

这个对象引用错误问题已经在这里解决了。但是我设法用这段代码解决了我自己的问题(清除 DataGridView 行(:

DataTable DT = (DataTable)datagridview1.DataSource;
if (DT != null) 
    DT.Clear();

我知道这个问题很久以前就被问过了,但我希望我的解决方案能解决某人的问题。

您的DataGridView是否绑定到DataSource,我认为这就是为什么它不允许您清除它,因为它绑定到底层DataTableList

您可以尝试将数据源属性设置为 null

清算datagridview1.DataSource = null;

private void button_Limpar_Click(object sender, EventArgs e)
{
    DataTable DT = (DataTable)dataGridView_Cidade.DataSource;
    if (DT != null)
        DT.Clear();
}
#endregion

只需在活动开始时添加以下行:

dgv_nameOfGridView.DataSource=false;

现在每次单击它都会删除dgv。

您必须清除数据源而不是数据网格视图行。

datagridview1.DataSource = null;

另一种方式是

1( 不要将直接数据源分配给网格视图。将行从数据表添加到网格视图

      foreach (DataRow row in dataTable.Rows)
        {
            var dataGridRow = new DataGridViewRow();
            dataGridRow.CreateCells(datagridview1);
            for (int i = 0; i < row.ItemArray.Length; i++)
            {
                dataGridRow.Cells[i].Value = row.ItemArray[i];
            }
            datagridview1.Rows.Add(dataGridRow);
        }

然后使用

datagridview1.Rows.Clear()

您可以使用以下简单方法:

首先清除数据表,然后刷新数据网格视图

dataTable.Clear();
dataGridView.Refresh();

希望这个帮助

简单的解决方案是清除数据集。DS.清除((;

由于您使用的是绑定网格,您是否尝试过调用加载 功能两次并验证数据没有加倍?

由于它是绑定的,因此加载两次应该不会复制数据。

http://www.vbforums.com/showpost.php?s=aa5f116586c00a2d9ea15e3727fc5c2f&p=2841192&postcount=9

首先清除数据源,然后清除 DataGridView

在 VB 中

 datagridview1.DataSource = Nothing
 datagridview1.Rows.Clear()

希望有所帮助

如果使用参数加载 DataGridView,则可以向其发送空参数。这将清除 DataGridView,而不必将其数据集设置为 null。

例如,当我填充文本框时,我用代码加载我的 DataGridView。

this.dataTable1TableAdapter.Fill(this.ds_MyDataSet.DataTable1, TextBox1.Text);

如果我想清除其内容,那么

this.dataTable1TableAdapter.Fill(this.ds_MyDataSet.DataTable1, "");

8年后的今天。

虽然

datagridview1.DataSource = null;

对于大多数人来说是一个令人满意的答案,对我来说,这删除了我在设计视图中添加到列中的所有自定义项。因此,如果我想清除行,就会出现隐藏列。

因此,与其清除行:

datagridview1.Rows.Clear()

清除用于设置 DataGridView 的数据表或数据视图。请注意,您不必检查某些内容是否为 null,也不必担心 Object 未设置为引用错误。

所以这是我做我的:

//Populate the datagridview
DataTable _DT = new DataTable();
BindingSource _BS = new BindingSource();
//Initially fill up your datatable with stuff
//You can call this method again if data needed to be changed
public void fillDT(int id) {
    _DT = fillUpDataTableWithStuffFromDB(id);
    _BS.DataSource = _DT.DefaultView;
    datagridview1.DataSource = _BS;
    _BS.ResetBindings(false);
}
//You can use this method to mimic the functionality above
//But rather fetching data, just clear out the datatable and pass it in
public void clearDT() {
    _DT.Clear();
    datagridview1.DataSource = _DT.DefaultView;
    datagridview1.Refresh();
}

正如你在上面看到的,我刚刚清除了数据表,并将其传递到数据网格中。这保留了我在数据网格视图列上设置的所有属性。

foreach (DataGridViewRow item in this.datagridview.Rows)
{
    datagridview.Rows.RemoveAt(item.Index);
}

我遇到了同样的问题,我尝试了许多解决方案。

最后,我意识到,如果我们使用它的属性"DGV",我们就无法清除 DataGridView。数据源",因为 DGV 从数据集中获取其数据,因此您需要清除数据表行

Dataset.Tables["TableName"].Rows.Clear();

如果您在表单加载中使用此功能,则需要添加条件

if (DataSet.Tables["TableName"] !=null)    
    Dataset.Tables["TableName"].Rows.Clear();

否则你会得到这个错误

对象引用未设置为对象的实例。