DataGridView自动生成列

时间:2012-03-19 10:07:48

标签: c# visual-studio-2010 datagridview

在我的Windows窗体上,我有一个DataGridView组件,它绑定到BindingSource。 BindingSource是EntityFramework对象的对象数据源。

有时我的DataBridView中的列会被更新。有时,所有属性都会添加为列,但现在它也会删除所有列。所以我丢失了所有设置。

何时自动添加列?

(我正在使用VS.NET 2010)

更新

//
// Summary:
//     Gets or sets a value indicating whether columns are created automatically
//     when the System.Windows.Forms.DataGridView.DataSource or System.Windows.Forms.DataGridView.DataMember
//     properties are set.
//
// Returns:
//     true if the columns should be created automatically; otherwise, false. The
//     default is true.
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[DefaultValue(true)]
public bool AutoGenerateColumns { get; set; }

该属性未显示在设计器中,并且未选中“隐藏高级属性”。

更新2: 当我更新我的实体框架模型时,会再次添加所有列。我只能在表单的构造函数中设置属性。这非常烦人。

5 个答案:

答案 0 :(得分:5)

我实际上不知道这种情况何时发生,但我倾向于手动创建所有列。我在设计器中创建了列,并在我的代码中将AutoGenerateColumns属性设置为false

答案 1 :(得分:5)

添加此代码或将DataGridView属性AutoGenerateColumns更改为false

DataGridView1.AutoGenerateColumns=false;

答案 2 :(得分:2)

将AutoGenerateColumns属性设置为False但请记住在数据绑定之前执行此操作。 例如:    DataGridView1.AutoGenerateColumns=false; DataGridView1.DataSource=getData();

默认设置为True。

答案 3 :(得分:1)

尝试先离开自动生成的列并将其设置为false。 如果没有帮助,请尝试使用Visible = false保留所有内容。 抱歉英语不好。

答案 4 :(得分:0)

我有同样的问题。我在代码中找不到AutoGenerate属性。

出于某些原因,我不了解我的DataGridView没有在VB代码中可以看到的AutoGenerate属性。

在“编辑列”对话框上看不到复选框。

在网格的属性视图中看不到AutoGenerate属性。

我有Visual Studio Community 2017。

这是我的课程属性:

公共属性BatchId为整数
公共属性代码为字符串
公共财产被视为整数
公共属性描述为字符串
公共属性ID为整数

所以,这就是我所做的:

  1. 我去了表格设计师。
  2. 我右键单击DataGridView。
  3. 我选择了“编辑列”。
  4. 我确保每个列的DataPropertyName字段都设置为类属性名称。

运行应用程序时,DataGridView仅显示班级中的那些列。