繁体   English   中英

如何使用BindingSource在DataGridView的单列中绑定Navigation Property(二级模型的两个属性)?

[英]How to bind Navigation Property (second level model's two properties) in DataGridView's single column using BindingSource?

我遇到了使用绑定源在网格视图中显示值的问题。 我有两个模型作为CompanyPartners

  1. 我在公司模型中有PartnerId
  2. 和Partner模型具有FirstNameLastName

我已经显示了公司信息和合作伙伴的名字,如上所示。

现在,我需要在单列中将Partner的名字和姓氏显示为PartnerName 任何人都可以帮我解决这个问题吗?

选项1 - CellFormatting

作为选项,您可以使用DataGridView CellFormatting事件并显示所需的值:

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    //I Suppose you want to show full name in column at index 3
    if(e.RowIndex>=0 && e.ColumnIndex==3)
    {
        var company = (Company)(this.dataGridView1.Rows[e.RowIndex].DataBoundItem);
        if (company != null && company.Partner != null)
            e.Value = string.Format("{0} {1}", company.Partner.FirstName,
                                                company.Partner.LastName);
    }
}

选项2 - ToString()

作为另一种选择,您可以覆盖Partner类的ToString()方法并在列中显示Partner

public override string ToString()
{
    return string.Format("{0} {1}", this.FirstName, this.LastName);
}

使属性返回格式化全名并将此绑定到网格单元格。 您可以使用多绑定,但需要额外的转换器,例如,返回(作为您的附加属性)格式化字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM