在 DataGridView 中将列设置为不同的 属性

Set column to different property in DataGridView

我有这个 2 类:

public class OrderDetail
{
    public int Id {get; set;}
    public int OrderId {get; set;}
    public virtual Product Product {get; set;}
}

public class Product
{
    public int Id {get; set;}
    public int Number {get; set;}
    public string Description {get; set;}
}

我有一个绑定到绑定源的 DataGridView,绑定源又绑定到 OrderDetail。

对于产品列,网格当前显示文本 MyAssembly.Product

如何设置该列以显示 OrderDetail.Product.Description

您是否尝试覆盖 Product class 的 ToString() 方法?

可以在新的控制台应用程序中重现该问题。

static void Main(string[] args)
{
    Product product = new Product
    {
        Id = 1,
        Number = 1,
        Description = "TheFirstProduct",
    };

    OrderDetail detail = new OrderDetail 
    {
        Id = 1,
        OrderId = 1,
        Product = product,
    };

    Console.WriteLine(detail.Product);
    Console.ReadLine();
}

此代码的行为与您在 DataGridView 上报告的行为相同。

ConsoleApplication1.Product

但是,如果您像这样重写 Product class 上的 ToString() 方法:

public class Product
{
    public int Id { get; set; }
    public int Number { get; set; }
    public string Description { get; set; }

    public override string ToString()
    {
        return this.Description;
    }
}

...那么Console.WriteLine(detail.Product)的结果可能是预期的。

TheFirstProduct