繁体   English   中英

将类的复杂数据源绑定到网格视图中

[英]Binding Complex Data source of a class into Grid View

在这里,我有这些类:

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>();
}

我正在制作一个CustomerDebts对象列表:

List<CustomerDebt> debts = new List<CustomerDebt>();

在这里我将添加一个项目:

Shops shop = new Shops();
shop.ints.Add(1);
shop.ints.Add(2);

shop.strings.Add("M");
shop.strings.Add("S");
shop.strings.Add("F");

CustomerDebt d = new CustomerDebt();

d.ID = 12;
d.Name = "Joe";
d.Family = "Steven";
d.Remain = "1000";
d.details.Add(shop);

debts.Add(d);

现在我将债务列表绑定到网格视图中:

gridview.DataSource = debts;

它将仅使用CustomerDebt类的“ID,Name,Family,Remain”属性自动填充网格视图。 但我需要将List属性(另一个Class的列表)绑定到网格视图中。

我认为它需要{get; set;}以网格显示,但我也不知道网格是否可以显示这样的嵌套类。

希望我很清楚。 我该怎么做才能获得一个带有Class对象列表的干净网格视图?

Windows窗体中的DataGridView控件中没有对“主详细信息”的内置支持。 但我们可以选择使用第三方库,例如:


至于绑定问题,是的,你需要一个带有公共getter的公共属性:

public List<Shops> details { set; get; } = new List<Shops>();

对于C#6之前,您可以使用:

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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM