【问题标题】:How Specify columns at list to show in DataSource GridView? C#如何指定列表中的列以显示在 DataSource GridView 中? C#
【发布时间】:2023-03-04 02:43:01
【问题描述】:

我有一个 DataGridView 和一个 List 作为 DataSorce,但我只想显示选定的列。

我有这样的东西......(仅作为示例)

 class Order{
    public int IdOrder;
    public string Product;
    public double Price;
    public int quantity;
 }

 List<Order> orders = new List<Order>();
 myDataGrid.DataSource = orders;

注意:另外我使用 devexpress 组件和 xPO 框架(它是相同的) 谢谢。

【问题讨论】:

    标签: c# gridview datagridview datagrid devexpress


    【解决方案1】:

    设置 DataSource 并填充列后,您可以遍历生成的列并隐藏/删除其中的一些:

    foreach (var column in gridView1.Columns.OfType<DevExpress.XtraGrid.Columns.GridColumn>())
    {
        if (column.FieldName == "MemberToBeHidden")
        {
            // Just hide it by default, user can still choose to show it later
            column.Visible = false;
    
            // Or completely remove from the grid
            gridView1.Columns.Remove(column);
        }
    }
    

    或者,如果您根本不希望该字段出现,您可以用BrowsableAttribute 标记它:

    class Order
    {
        public int IdOrder;
        public string Product;
        public double Price;
        public int quantity;
        [Browsable(false)]
        public string MemberToBeHidden;
    }
    

    【讨论】:

    • DevExpress.xpo 是带有 System.ComponentModel 的 ambobiguos 属性。xpo 上不存在 [DisplayName("Name")] 和 [Browsable(false)]。但是您的第一个答案非常有用。谢谢。
    【解决方案2】:

    您可以对要隐藏的每个列执行以下操作:

    myDataGrid.Columns[0].Visible = false;
    

    【讨论】:

    • 简单高效!谢谢杰克。!
    【解决方案3】:

    您应该禁用 datagridview 的 AutoGeneratedColumns 属性,使用与您不想显示的属性相同的列名手动创建列,然后将数据源绑定到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多