这是我的代码:
void Main() {
List<Restaurant> restaurants = new List<Restaurant>();
}
class Restaurant {
public int Id;
public List<Complaint> Complaints = new List<Complaints>();
}
class Complaint {
public string Name;
public string Address;
public int Age;
public DateTime ComplaintDate;
}
我想在DataGridView控件中显示包含在RestaurantData中的数据,该数据是Restaurant类的对象。首先,我想显示饭店的ID,然后是饭店的投诉数量,以便看起来像这样(ID在A列中,名称在B列中,依此类推):
我过去对DataGridView的用法仅限于dataGridView1.DataSource =(某些数组)。但是,这次我想提供的信息显然不是数组,因此我很困惑。
如果要将列剔除到自己的列表中,则可以使用以下方法:
private void AddColumns()
{
dataGridView1.AutoGenerateColumns = false;
DataGridViewTextBoxColumn ageColumn =
new DataGridViewTextBoxColumn();
ageColumn.Name = "Age";
ageColumn.DataPropertyName = "Age";
ageColumn.ReadOnly = true;
DataGridViewTextBoxColumn nameColumn =
new DataGridViewTextBoxColumn();
nameColumn.Name = "Name";
nameColumn.DataPropertyName = "Name";
nameColumn.ReadOnly = true;
DataGridViewTextBoxColumn addressColumn =
new DataGridViewTextBoxColumn();
addressColumn.Name = "Address";
addressColumn.DataPropertyName = "Address";
addressColumn.ReadOnly = true;
DataGridViewTextBoxColumn dateColumn =
new DataGridViewTextBoxColumn();
addressColumn.Name = "Date";
addressColumn.DataPropertyName = "Date";
addressColumn.ReadOnly = true;
dataGridView1.Columns.Add(ageColumn);
dataGridView1.Columns.Add(nameColumn);
dataGridView1.Columns.Add(addressColumn);
dataGridView1.Columns.Add(dateColumn);
var ds = (from r in restaurants
from c in r.Complaints
select new {Id = r.Id, Address =c.Address, Age = c.Age, Name = c.Name, Date = c.ComplaintDate}
).ToList();
dataGridView1.DataSource = ds;
}
如果您只想自动生成列,请尝试以下操作:
private void AddColumns()
{
dataGridView1.AutoGenerateColumns = true;
var ds = (from r in restaurants
from c in r.Complaints
select new {Id = r.Id, Address =c.Address, Age = c.Age, Name = c.Name, Date = c.ComplaintDate}
).ToList();
dataGridView1.DataSource = ds;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句