我正在使用自定义对象绑定到GridView。
假设我有一系列汽车公司(奥迪,福特,宝马等)。每个Company对象都有Id,Name,Country等属性
每家公司还有一个汽车收藏。每辆车都有Id,Model,Year等属性
我想将此信息绑定到GridView。
所以我正在检索公司的查询,并且在每个汽车收集的第一个对象中,有一辆汽车的数据(对象模型是这样的,因为在其他情况下我必须列出公司的所有汽车)。 / p>
将Gridview绑定到Companies集合时没有问题。我可以列出每个公司以及我要展示的每个汽车信息。
当我想设置DataKeyNames时出现问题。我想用每辆车的Id(不是每家公司的Id)来设置比较汽车。
我正在尝试这样的事情:
GridViewCompanies.DataSource = companies;
GridViewCompanies.DataKeyNames = new string[] { "Cars[0].Id" };
但它不起作用,它说它不包含名称的属性。
有没有办法设置它?
我不想将Gridview绑定到Cars集合,因为如果我这样做,我会错过每个公司的信息,我也需要使用公司的属性。
非常感谢。
答案 0 :(得分:1)
试一试:
var carCompanyList = new[]
{
new { Id = 1, Name = "Audi", Cars = new[] { new { Id = 10, Model = "Audi_Model_1" }, new { Id = 12, Model = "Audi_Model_2" } } },
new { Id = 2, Name = "Ford", Cars = new[] { new { Id = 20, Model = "Ford_Model_1" }, new { Id = 22, Model = "Ford_Model_2" } } }
};
var gridViewData = from carCompany in carCompanyList
select new
{
carCompany.Id,
carCompany.Name,
firstModelId = carCompany.Cars == null || carCompany.Cars.Count() == 0 ? 0 : carCompany.Cars.First().Id
};
CarModelGridView.DataSource = gridViewData;
CarModelGridView.DataKeyNames = new [] { "firstModelId" };
CarModelGridView.DataBind();