Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGridView.Clear()_C#_.net - Fatal编程技术网

C# DataGridView.Clear()

C# DataGridView.Clear(),c#,.net,C#,.net,麻烦来了。 我想从datagridview中删除所有行。 以下是我添加行的方式: private void ReadCompleteCallback(object clientHandle, Opc.Da.ItemValueResult[] results) { foreach (Opc.Da.ItemValueResult readResult in results) { dataGridView1.Invoke(new MethodInvoker(()

麻烦来了。 我想从datagridview中删除所有行。 以下是我添加行的方式:

private void ReadCompleteCallback(object clientHandle, Opc.Da.ItemValueResult[]     results)
{
    foreach (Opc.Da.ItemValueResult readResult in results)
    {
        dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(readResult.ItemName, readResult.Quality, readResult.Timestamp,readResult.Value)));        
    }
}                              
这就是我清除gridview的方式:

private void treeView1_SelectionsChanged(object sender, EventArgs e)
{
    dataGridView1.Rows.Clear();
    items = new Opc.Da.Item[treeView1.SelectedNodes.Count]; 
    foreach (TreeNode x in treeView1.SelectedNodes) {
        items[treeView1.SelectedNodes.IndexOf(x)] = new Opc.Da.Item();
        items[treeView1.SelectedNodes.IndexOf(x)].ItemName = x.Text; 
    }

    group.AddItems(items);
    group.Read(group.Items, 123, new Opc.Da.ReadCompleteEventHandler(ReadCompleteCallback), out req);
}
在调试中,我看到dataGridVIew1.Rows.Count=0,但在窗体上,网格并没有变得清晰。什么意思?
在树中的每个选择上,我希望在表中看到新行。

尝试将RowCount设置为0(allowuserstorows应为false),同时调用clear

我打赌您只需要刷新数据网格。试试这个:

dataGridView1.Rows.Clear();
dataGridView1.Refresh();

如果这有效的话。。。您可能需要重新考虑应用程序的这一部分。

如果我没记错,我将DataSource属性设置为null以清除DataGridView:

datagridview.DataSource = null;

将datasource属性设置为空字符串,然后调用Clear方法。

要清除
datagridview
请编写以下代码:

dataGridView1.DataSource=null;

这是一种方法:

datagridview.DataSource = null;
datagridview.Refresh();

我希望它对您有效,因为它对我有效。

在填充数据表之前,您需要做的就是清除数据表。。。然后将其设置为dgv的数据源

我个人不喜欢弄乱数据源,因此在与it朋友讨论该问题后,我能够发现这种简单且不影响数据源的方法。希望这有帮助

foreach (DataGridViewRow row in dataGridView1.Rows) 
{
    foreach (DataGridViewCell cell in row.Cells)
    {
        cell.Value = "";
    }
}
尝试:


基本上,您需要清除与网格绑定的数据源。

基本上,代码行下面的代码只在数据绑定场景中有用

datagridview.DataSource = null; 
否则,在没有数据绑定且手动填充datagridview时,将使用以下选项

dataGridView1.Rows.Clear();
dataGridView1.Refresh();

所以,首先检查你在做什么

如果您试图重新绑定数据网格视图,只需编写以下代码:

DataGridView1.DataSource = DataSet.Tables["TableName"];

否则,如果您试图清除数据网格视图,只需编写以下代码:

DataGridView.DataSource = null;
DataGridView.Rows.Clear();
DataGridView.Refresh();
并在此代码行下方添加任何方法或事件以再次绑定数据网格视图

试试这段代码

private void button_Click(object sender, EventArgs e) {
    if (this.dgInv.DataSource != null) {
        this.dgInv.DataSource = null;
    } else {
        this.dgInv.Rows.Clear();
    }
}

如果要清除未绑定到DataSource但手动加载的dataGridView,可以使用以下简单代码:

datagridview.Rows.Clear();
datagridview.Columns.Clear();
试试这个方法

dataGridView1.DataSource = dt;
dt.Rows.Clear();

我有这段代码,我希望它能帮助你

int numRows = dgbDatos.Rows.Count;    
for (int i = 0; i < numRows; i++)
{
    try
    {    
        int max = dgbDatos.Rows.Count - 1;
        dgbDatos.Rows.Remove(dgbDatos.Rows[max]);

    }
    catch (Exception exe)
    {
        MessageBox.Show("You can´t delete A row " + exe, "WTF",
        MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}
int numRows=dgbDatos.Rows.Count;
对于(int i=0;i
试试这个

DataGridView1.DataSource=ds;
ds.Clear();

如果您的
DataGridView
没有任何
DataSource
,则解决方案不会通过操纵它来实现

如果将
allowUserToAddress
属性设置为
true
,则始终会有一个
空的


如果您不需要许可,请将
allowUserToAddress=false
放入。

我知道这听起来很疯狂,但我通过 将datagrid.visible属性更改为false,然后更改为true。
它会引起一个很小的眨眼,但对我来说很有效(至少现在是这样)。

这似乎是一个非常奇怪的时间来清除它,我希望这与问题有关。出于兴趣,你想在这里做什么?好吧,我明白了,现在更有意义了。试着想想为什么会这样。为什么不使用带有BindingList的数据源呢?嗯。。我没有数据源。数据取自opc服务器。但这是个好主意,我会尽力做到的。它说行数必须至少为1。但是,即使将其设置为1-也无济于事。这不是所有其他答案都在尖叫的地方吗?不完全是。如果数据源绑定到DataTable,则只需调用DataTable.Clear();将在一个简单的步骤中完成工作。此答案假设使用数据绑定。如果手动操作栅格,则此操作将不起作用。需要对手动插入的行执行Rows.Clear()和Refresh()。请参阅NitroxDM的答案。此答案假设使用数据绑定。如果手动操作栅格,则此操作将不起作用。需要对手动插入的行执行Rows.Clear()和Refresh()。请参阅NitroxDM的答案。此答案假设使用数据绑定。如果手动操作栅格,则此操作将不起作用。需要对手动插入的行执行Rows.Clear()和Refresh()。请参阅NitroxDM的答案。迭代很慢。请尝试调用行的collection Clear()方法。
dataGridView1.DataSource=null;
int numRows = dgbDatos.Rows.Count;    
for (int i = 0; i < numRows; i++)
{
    try
    {    
        int max = dgbDatos.Rows.Count - 1;
        dgbDatos.Rows.Remove(dgbDatos.Rows[max]);

    }
    catch (Exception exe)
    {
        MessageBox.Show("You can´t delete A row " + exe, "WTF",
        MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}
DataGridView1.DataSource=ds;
ds.Clear();