【问题标题】:DataGridView automatically generates columnsDataGridView 自动生成列
【发布时间】:2012-03-19 10:07:48
【问题描述】:

在我的 Windows 窗体上,我有一个绑定到 BindingSource 的 DataGridView 组件。 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: 当我更新我的实体框架模型时,所有列都会再次添加。我只能在表单的构造函数中设置属性。这很烦人。

【问题讨论】:

  • 将DataGridView的AutoGenerateColumns属性设置为false。
  • 我在表单构造函数中设置了 AutoGenerateColumns = false 但仍然遇到问题
  • 在我的例子中,这些顽皮的自动生成的列只出现在设计器中,而不是实际的表单上。看起来像一个错误。
  • 这里也一样,每当我使用 datagridview 重新打开表单时,它都会从有界源生成所有列。

标签: c# visual-studio-2010 datagridview


【解决方案1】:

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

【讨论】:

  • 非常感谢。这就是我所做的,手动设计了列和大小。该属性没有出现在设计器中,但我现在在代码中设置了它。
  • 是的,我不知道为什么这个属性不能在设计器中设置 - 从 Visual Studio 2005 开始就是这样......
【解决方案2】:

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

DataGridView1.AutoGenerateColumns=false;

【讨论】:

  • 查看我的问题的更新。我还不能回答问题。
【解决方案3】:

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

默认设置为 True。

【讨论】:

  • 谢谢。 DataGridView1.AutoGenerateColumns=false; 必须在分配数据源之前设置
【解决方案4】:

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

【讨论】:

    【解决方案5】:

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

    由于我不明白的原因,我的 DataGridView 没有我可以在我的 VB 代码中看到的 AutoGenerate 属性。

    我在“编辑列”对话框中没有看到复选框。

    我在网格的属性视图中没有看到 AutoGenerate 属性。

    我有 Visual Studio Community 2017。

    这是我的类属性:

    公共属性 BatchId 为整数
    作为字符串的公共财产代码
    公共属性计数为整数
    公共属性描述为字符串
    公共属性 ID 为整数

    所以,这就是我所做的:

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

    当我运行我的应用程序时,DataGridView 仅显示我的类中的那些列。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2015-12-08
      • 1970-01-01
      相关资源
      最近更新 更多