【问题标题】:How to delete binding column from DataGridView?如何从 DataGridView 中删除绑定列?
【发布时间】:2016-08-09 22:25:28
【问题描述】:

如何在 DataSource 属性中绑定后从 DataGridView 中删除列?

比如我的对象是:

public class A 
{
    int a;
    int b;
    int c;
}

那我在做:

List<A> aList = new List<A>();

//add some values in aList

myDataGridView.DataSource = aList;

我的 DataGridView 正在显示 A、B 和 C 的列,我想从该列表中删除 C 列。

任何建议都会被采纳。

【问题讨论】:

  • 不修改你的类?
  • 是的.. 我在我的商业模式中使用这个字段
  • 隐藏列还不够?
  • 您可以使用[Browsable(false)]装饰该物业。您还可以使用 linq 选择包含所需属性的列表。

标签: c# winforms data-binding datagridview


【解决方案1】:

您可以创建一个单独的类 (DTO),它只有 AB。然后创建该类的列表并绑定到 gridview。

(或)

使用必要的列创建一个DataTable -> 填充该数据表并将其绑定为您的网格视图的数据源。

(或)

保持列绑定到您的网格视图,但隐藏它说

myDataGridView.Columns["C"].Visible = false;

【讨论】:

    【解决方案2】:

    作为一个简单的选项,您可以使用[Browsable(false)] 来装饰该属性。这样,当您的列自动生成时,该列将不会显示在网格中:

    [Browsable(false)]
    public int c { get; set; }
    

    您还可以使用Displayname 属性来设置列标题文本,例如,如果您使用[DisplayName("Some Text")] 属性装饰属性,某些文本将显示为标题文本。 p>

    另一个简单的解决方案是使用linq从原始列表中选择包含您需要的属性的对象列表:

    var aList = new List<A>();
    dataGridView1.DataSource = aList.Select(x => new { a = x.a, b = x.b }).ToList();
    

    【讨论】:

    • browsable 属性正是我要寻找的。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2011-05-14
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多