如何使用 BindingSource 在 DataGridView 的单列中绑定 Navigation 属性(二级模型的两个属性)?
How to bind Navigation Property (second level model's two properties) in DataGridView's single column using BindingSource?
我在使用绑定源显示网格视图中的值时遇到了问题。我有两个模型 Company
和 Partners
。
- 我在公司模型中有
PartnerId
,
- 合作伙伴模型有
FirstName
和 LastName
。
我已经显示了公司信息和合作伙伴的名字,如上所示。
现在,我需要在单列中将合作伙伴的名字和姓氏显示为 PartnerName
。谁能帮我解决这个问题?
制作 属性 其中 returns 格式的全名并将其绑定到网格单元格。您可以使用多重绑定,但这需要额外的转换器,例如 returns(作为您的额外 属性)格式的字符串。
选项 1 - 单元格格式
作为一个选项,您可以使用 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
class 的 ToString()
方法并在列中显示 Partner
:
public override string ToString()
{
return string.Format("{0} {1}", this.FirstName, this.LastName);
}
我在使用绑定源显示网格视图中的值时遇到了问题。我有两个模型 Company
和 Partners
。
- 我在公司模型中有
PartnerId
, - 合作伙伴模型有
FirstName
和LastName
。
我已经显示了公司信息和合作伙伴的名字,如上所示。
现在,我需要在单列中将合作伙伴的名字和姓氏显示为 PartnerName
。谁能帮我解决这个问题?
制作 属性 其中 returns 格式的全名并将其绑定到网格单元格。您可以使用多重绑定,但这需要额外的转换器,例如 returns(作为您的额外 属性)格式的字符串。
选项 1 - 单元格格式
作为一个选项,您可以使用 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
class 的 ToString()
方法并在列中显示 Partner
:
public override string ToString()
{
return string.Format("{0} {1}", this.FirstName, this.LastName);
}