Binding Complex Data source of a class into Grid View
这里我有这些课程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class CustomerDebt { public int ID { get; set; } public string Name { get; set; } public string Family { get; set; } public string Remain { get; set; } public List<Shops> details = new List<Shops>(); } public class Shops { public List<int> ints = new List<int>(); public List<string> strings = new List<string>(); } |
我正在列出CustomerDBTS对象:
1 |
在这里我将添加一个项目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
现在,我将债务列表绑定到网格视图中:
1 | gridview.DataSource = debts; |
它将自动用customerDBT类的"id、name、family、remay"属性填充网格视图。但我需要将列表属性(另一个类的列表)绑定到网格视图中。
我认为在网格中显示它需要get;set;之类的东西,但我也不知道网格是否可以显示这样的嵌套类。
希望我明白。我应该怎么做才能获得一个包含此类类对象列表的干净网格视图?
Windows窗体中的DataGridView控件中没有对主控形状详细信息的内置支持。但我们可以选择使用第三方库,如:
- 特雷里克
- 德维斯特
对于绑定问题,是的,您需要有一个带有公共getter的公共属性:
1 |
对于C 6之前,您可以使用:
1 2 3 4 5 6 7 8 9 | public class CustomerDebt { public CustomerDebt() { details = new List<Shops>(); } public List<Shops> details { set; get; } } |
除接受的答案外,另一种方法如下。可以手动添加列,然后相应地填充行。
1 2 3 4 5 6 7 8 9 | this.gridview.Columns.Add("ID","ID"); this.gridview.Columns.Add("Name","Name"); this.gridview.Columns.Add("Family","Family"); this.gridview.Columns.Add("Remain","Remain"); this.gridview.Columns.Add("Details","Details"); foreach (var debt in debts) foreach (var detail in debt.details) this.dataGridView1.Rows.Add(debt.ID, debt.Name, debt.Family, debt.Remain,"Ints:" + string.Join(",", detail.ints) +" Strings:" + string.Join(",", detail.strings)); |