在 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
我有这个 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