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

时间:2016-04-21 06:03:47

标签: c# winforms entity-framework datagridview bindingsource

我遇到了使用绑定源在网格视图中显示值的问题。我有两个模型} return sdn.DeviceNumber; Company

  1. 我在公司模型中有Partners
  2. 和合作伙伴模型有PartnerIdFirstName
  3. 我已经显示了公司信息和合作伙伴的名字,如上所示。

    现在,我需要将合作伙伴的第一个姓名和姓氏显示为LastName 。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

选项1 - CellFormatting

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

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()

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

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

答案 1 :(得分:0)

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