C# 将类的复杂数据源绑定到网格视图中
这里我有这些课程:C# 将类的复杂数据源绑定到网格视图中,c#,windows,gridview,C#,Windows,Gridview,这里我有这些课程: 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 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>();
}
现在,我将债务列表绑定到网格视图中:
gridview.DataSource = debts;
它将自动使用CustomerDebt类的“ID、名称、族、剩余”属性填充网格视图。但是我需要将另一个类的列表属性List绑定到grid视图中
我认为它需要在网格中显示类似{get;set;}的内容,但我也不知道网格是否可以显示这样的嵌套类
希望我明白了。我应该怎么做才能用这样的类对象列表获得一个干净的网格视图?Windows窗体中的DataGridView控件中没有内置的对主详细信息的支持。但我们可以选择使用第三方库,如:
至于绑定问题,是的,您需要有一个带有公共getter的公共属性:
public List<Shops> details { set; get; } = new List<Shops>();
公共列表详细信息{set;get;}=new List();
对于C#6之前的版本,您可以使用:
public class CustomerDebt
{
public CustomerDebt()
{
details = new List<Shops>();
}
public List<Shops> details { set; get; }
}
公共类CustomerDebt
{
公共CustomerDebt()
{
详细信息=新列表();
}
公共列表详细信息{set;get;}
}
除了可接受的答案外,另一种方法如下所示。可以手动添加列,然后相应地填充行
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));
我不记得.NET内置Windows窗体网格支持主细节数据源。是的,当控件支持它时,您需要一个公共getter
public List details{set;get;}=new List()代码>我使用的是Telerik网格,但是关于公共getter,它不会像您编写的那样工作,并且会给出错误@陌生人,这是一个C#6语法。检查编辑之前的版本。两个问题。首先,我怎样才能找到我的C版本?我使用的是visual studio 2013,其次,它现在似乎正在工作,但Telerik Grid无法显示包含is内部数据的详细信息列,这是另外两个列表。我将只在其中写一个文本,如“System.Collection.Generic”@陌生人您需要对Shop类中的列表执行相同的操作。然而,我不确定Telerik的网格是否支持多层嵌套。至于c#版本,请检查:是的,我在Shop类中使用了列表,但Telerik不支持这种视图。我该怎么办?
public class CustomerDebt
{
public CustomerDebt()
{
details = new List<Shops>();
}
public List<Shops> details { set; get; }
}
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));