[英]How to bind a Navigation Property (second level properties) in DataGridView using BindingSource?
[英]How to bind Navigation Property (second level model's two properties) in DataGridView's single column using BindingSource?
我遇到了使用绑定源在网格视图中显示值的问题。 我有两个模型作为Company
和Partners
。
PartnerId
, FirstName
和LastName
。 我已经显示了公司信息和合作伙伴的名字,如上所示。
现在,我需要在单列中将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.