我的DGV控件的数据源是一个实体类的泛型集合,但是实体类里面,有的属性类型时另外的实体类,就类似于数据库的表外键约束,但是我要他显示属性中的属性时,应该怎么做??如果我按照正常的方法,直接给控件的数据源赋值,那么我要显示的那几列就会显示出他的类型名,下面是代码/// <summary>
/// 采购记录表
/// </summary>
[Serializable]
public class StockLog
{
    public StockLog () { }    #region 字段
    private string id;
    private string goodsName;
    private GoodsType goodsType;
    private GoodsUnit goodsUnit;
    private decimal goodsPrice;
    private int goodsCount;
    private decimal payable;
    private UserInfo userInfo;
    private DateTime date;
    private SupplierInfo supplierInfo;
    private DepotInfo depotInfo;
    private string comment;
    #endregion
    #region 属性
    /// <summary>
    /// 采购记录ID
    /// </summary>
    public string Id
    {
        get { return id; }
        set { id = value; }
    }
    /// <summary>
    /// 货物名称
    /// </summary>
    public string GoodsName
    {
        get { return goodsName; }
        set { goodsName = value; }
    }
    /// <summary>
    /// 商品类型
    /// </summary>
    public GoodsType GoodsType
    {
        get { return new GoodsType(); }
        set { goodsType = value; }
    }
    /// <summary>
    /// 商品单位
    /// </summary>
    public GoodsUnit GoodsUnit
    {
        get { return new GoodsUnit(); }
        set { goodsUnit = value; }
    }
    /// <summary>
    /// 货物价格
    /// </summary>
    public decimal GoodsPrice
    {
        get { return goodsPrice; }
        set { goodsPrice = value; }
    }
    /// <summary>
    /// 货物数量
    /// </summary>
    public int GoodsCount
    {
        get { return goodsCount; }
        set { goodsCount = value; }
    }
    /// <summary>
    /// 应付货款
    /// </summary>
    public decimal Payable
    {
        get { return payable; }
        set { payable = value; }
    }
    /// <summary>
    /// 进货员工
    /// </summary>
    public UserInfo UserInfo
    {
        get { return new UserInfo(); }
        set { userInfo = value; }
    }
    /// <summary>
    /// 出售日期
    /// </summary>
    public DateTime Date
    {
        get { return date; }
        set { date = value; }
    }
    /// <summary>
    /// 供货商信息
    /// </summary>
    public SupplierInfo SupplierInfo
    {
        get { return new SupplierInfo(); }
        set { supplierInfo = value; }
    }
    /// <summary>
    /// 仓库信息
    /// </summary>
    public DepotInfo DepotInfo
    {
        get { return new DepotInfo(); }
        set { depotInfo = value; }
    }
    /// <summary>
    /// 备注
    /// </summary>
    public string Comment
    {
        get { return comment; }
        set { comment = value; }
    }
    #endregion
}
/// <summary>
/// 商品单位
/// </summary>
[Serializable]
public class GoodsUnit
{
    public GoodsUnit () { }    #region 字段
    private int unitId;
    private string unitName; 
    #endregion    #region 属性
    /// <summary>
    /// 单位ID
    /// </summary>
    public int UnitId
    {
        get { return unitId; }
        set { unitId = value; }
    }
    /// <summary>
    /// 单位
    /// </summary>
    public string UnitName
    {
        get { return unitName; }
        set { unitName = value; }
    } 
    #endregion
}我现在就是要的,设置数据源为List<StockLog>类型的数据时,怎么显示他的类型名出来

解决方案 »

  1.   

    重载这些类的 ToString() 方法。
      

  2.   

    譬如你的UserInfo 类,你重写UserInfo 的ToString()方法。假如你的UserInfo中有姓名(UserName),生日(BirthDay)。public override string ToString()
    {
            return this.UserName + this.BirthDay..ToLongDateString();
    }
      

  3.   

    DataGridView1.DataSource=new BindingList<MyClass>(new List<MyClass>())
    MyClass.UserInfo.Name
      

  4.   

    我重写 ToString方法后出现了:单元格的Formatted值的类型错误
      

  5.   

    你可以用绑定的方式,比如在一个DGV的一个col里嵌入另一个DGV,然后将 商品单位  绑定到这个col上,然后在这个嵌入的DGV里声明绑定数据源“商品单位”。这个是可行的。
      

  6.   

    我觉得,你在DGV加载数据事件里,获得你自定义类型的数据,然后放到列里面,这样应该可以。
      

  7.   

    顶!正遇到这样的问题。DataGridView中的列来自不同的List<T>,如何绑定?