DataGridView.Clear()

eba*_*eba 47 .net c#

麻烦来了.我想从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)));        
    }
}                              
Run Code Online (Sandbox Code Playgroud)

它是如何清除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);
}
Run Code Online (Sandbox Code Playgroud)

在调试中,我看到dataGridVIew1.Rows.Count = 0,但在表单上,​​网格并没有变得清晰.什么意思?在树中的每个选择,我想看到表中的新行.

Nit*_*xDM 121

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

dataGridView1.Rows.Clear();
dataGridView1.Refresh();
Run Code Online (Sandbox Code Playgroud)

如果这样做......您可能想重新考虑应用程序的这一部分.


IAb*_*act 32

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

datagridview.DataSource = null;
Run Code Online (Sandbox Code Playgroud)

  • 这个答案假定使用数据绑定.如果手动操作网格,则无效.需要为手动插入的行执行Rows.Clear()和Refresh().请参阅NitroxDM的回答. (4认同)

小智 13

要清除datagridview写下面的代码:

dataGridView1.DataSource=null;
Run Code Online (Sandbox Code Playgroud)


小智 7

基本上下面的代码行仅在数据绑定方案中有用

datagridview.DataSource = null; 
Run Code Online (Sandbox Code Playgroud)

否则是在没有手动填充数据绑定和datagridview时使用的

dataGridView1.Rows.Clear();
dataGridView1.Refresh();
Run Code Online (Sandbox Code Playgroud)

所以,先检查一下你在做什么.


dan*_*004 5

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

datagridview.Rows.Clear();
datagridview.Columns.Clear();
Run Code Online (Sandbox Code Playgroud)