我有两个Tables Estate和EstateType。如何将这两个表绑定到一个数据网格? 我试过这样的事情,但这不起作用。
var getAllEst = (from ee in AgencyContext.Estate join eeT in AgencyContext.EstateType
on ee.EstateID equals eeT.EstateID select ee).ToList();
dataGridView1.DataSource = getAllEst;
而不是字符串值EstateType,Landscape,Description它给了我数字
正如所建议的那样@ tpayne84我添加了新列,但现在我得到了这个而不是值:
这是我使用的代码:
var getAllEst = (from ee in AgencyContext.Estate join eeT in AgencyContext.EstateType
on ee.EstateID equals eeT.EstateID select ee).ToList();
DataGridViewTextBoxColumn EstateType1 = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn LandScape1 = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn Description1 = new DataGridViewTextBoxColumn();
EstateType1.DataPropertyName = "EstateType";
LandScape1.DataPropertyName = "LandScape";
Description1.DataPropertyName = "Discription";
dataGridView1.Columns.Add(EstateType1);
dataGridView1.Columns.Add(LandScape1);
dataGridView1.Columns.Add(Description1);
dataGridView1.DataSource = getAllEst;
答案 0 :(得分:0)
问题看起来就是显示引用对象的外键ID,而不是您希望显示的对象上的属性。
这是因为您允许DataGridView为您生成列。
要解决此问题,您需要自己创建列:
DataGridViewTextBoxColumn nameColumn = new DataGridViewTextBoxColumn();
// Where "Name" is the String representation of the Property on the
// Object that you want to display.
nameColumn.DataPropertyName = "Name";
答案 1 :(得分:0)
首先,您的查询
除非var getAllEst = (from ee in AgencyContext.Estate join eeT in AgencyContext.EstateType on ee.EstateID equals eeT.EstateID select ee).ToList();
AgencyContext.Estate
具有EstateType
的某些导航属性,否则将仅使用内部联接选择具有关联Estate class
的{{1}}个对象。如果你有类似的东西:
EstateType
然后您就可以通过该属性访问class Estate
{
// ...other properties
// I'm guessing the relationship here...
public virtual EstateType EstateType { get; set; }
}
属性。
不幸的是,EstateType
doesn't seem to support binding to child properties因此您无法设置DataGridView
,但您可以通过覆盖column.DataPropertyName = EstateType.SomeProperty
或处理{{}来解决这个问题。 1 {} EstateType.ToString()
上的事件。