所以我有一个datagridview。
通常我可以创建我的对象的绑定列表,它将正确显示所有数据和列
E.g
BindingList<Customer> CustomerList = new BindingList<Customer>();
myDataGridView.DataSource = CustomerList;
它将在Customer中为每个具有getter的属性显示一列。 它还会为每个对象显示一行。
完美的结果。
现在在我的当前场景中,我有这些对象:
public class Reservedele
{
public int Rnr { get; private set;}
public string Navn { get; private set;}
public double Pris { get; private set;}
public string Type { get; private set;}
public Reservedele(int rnr, string navn, double pris, string type)
{
Rnr = rnr;
Navn = navn;
Pris = pris;
Type = type;
}
}
public class IndkøbsKurvReservedele
{
public Reservedele Reservedel { get; private set;}
public int Antal { get; private set; }
public double Pris { get; private set; }
public IndkøbsKurvReservedele(Reservedele reservedel, int antal, double pris)
{
Reservedel = reservedel;
Antal = antal;
Pris = pris;
}
}
所以,如果我这样做:
BindingList<IndkøbsKurvReservedele> ReserveDeleListeIndKøbsKurv = new BindingList<IndkøbsKurvReservedele>();
myDataGridView.DataSource = ReserveDeleListeIndKøbsKurv;
它不起作用:( 错误是datagridview显示:
如何指示datagridview我希望它具有Reservedel
中的属性,后跟IndkøbsKurvReservedele
中的属性作为标题?
作为参考,Reservedel表示“备件”,IndkøbsKurvReservedel表示“ShoppingBasketOfSpareParts”。 Antal意味着“数量”与数量有关。 对不起外来变量命名。
编辑:我还有一个问题:如何让Rnr
属性不显示为列?
答案 0 :(得分:2)
从技术上讲,你不能,数据源不绑定任何嵌套属性。
但是,您始终可以通过在父级中公开子对象的属性来解决此问题。
答案 1 :(得分:1)
您还可以覆盖Reservedele类的ToString()方法以显示您想要的任何内容(默认情况下,DataGridView将调用ToString()方法来获取单元格内容。)
答案 2 :(得分:1)
您可以随时使用LINQ并执行以下操作:
var bindMe =
from r in ReserveDeleListeIndKøbsKurv
select new
{
navn = r.Reservedel.Navn,
pris = r.Reservedel.Pris,
type = r.Reservedel.Type,
antal = r.Antal,
anotherPris = r.Pris
};
myDataGridView.DataSource = bindMe;
答案 3 :(得分:0)
除非您继承该类或将所有这些数据包装到某种数据集中,否则不能这样做。我不知道你们班级的关系或他们如何融合在一起。通过您给我们的当前帖子,这是不可能的。
你怎么敢把变量创建为外来词呢!开玩笑吧
答案 4 :(得分:0)
这是我的解决方案:
public class IndkøbsKurvReservedele
{
//public Reservedele Reservedel { get; private set;}
private int Rnr;
public string Navn { get; private set; }
public double Pris { get; private set; }
public string Type { get; private set; }
public int Antal { get; private set; }
public double SPris { get; private set; }
public IndkøbsKurvReservedele(Reservedele reservedel, int antal, double sPris)
{
Rnr = reservedel.Rnr;
Navn = reservedel.Navn;
Pris = reservedel.Pris;
Type = reservedel.Type;
Antal = antal;
SPris = sPris;
}
public int HenrReservedelsNummer()
{
return Rnr;
}
}
如果有人创造更好的。我会接受他们的。