清除DataSource后保留DataGridView元数据

时间:2016-04-07 13:53:24

标签: c# .net winforms linq datagridview

我有DataGridViewvar集合,来自两个数据库对象之间的LINQ join。我只从结果联接中选择某些列,并将其作为DataSource属性提供给我的DataGridView。我的DataGridView的元数据适用于var对象的列,并在运行时应用格式。
问题是我需要清除内容并使用var结果提供新的join。如果我编码DataGridView.DataSource = null我将清除内容但也会销毁元数据。下次我提供我的var集合时,格式化将全部搞砸。
问题是如何清除数据绑定的DataGridView内容并保留其原始元数据? 我想我可以提供在我加入的对象之后建模的空var集合,但是有一个本地DataGridView方法可以清除内容并保留列结构吗?

2 个答案:

答案 0 :(得分:1)

尝试

dataGridView1.Rows.Clear();

答案 1 :(得分:1)

如果您为DataGridView定义列并将AutoGenerateColumns设置为false,那么您的网格只会显示您定义的列。即使将DataSource设置为null,它也会保留列。

示例:

在下面的示例中,网格仅在网格中显示Property1和Property2。此外,如果将数据源设置为null,则网格会保留列。

var column1 = new DataGridViewTextBoxColumn();
column1.DataPropertyName = "Property1";
column1.HeaderText = "Column1";

var column2 = new DataGridViewTextBoxColumn();
column2.DataPropertyName = "Property2";
column2.HeaderText = "Column2";

this.dataGridView1.Columns.Add(column1);
this.dataGridView1.Columns.Add(column2);

this.dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.DataSource = Enumerable.Range(1, 10)
                                            .Select(x => new 
                                            { 
                                                Property1 = x,
                                                Property2 = x, 
                                                Property3 = x
                                            }).ToList();