编辑:
我重构了我的代码,使收集的项目具有我在收集器中存储的ID的副本。感谢那些阅读并提出建议的人!
结束编辑
我有一个对象Collector,在我的表单中有两个属性。一个是int(ID),另一个是不同对象的列表(Collected)。我想在数据网格视图中显示列表中的所有Collected对象以及收集器ID。 ID对于数据网格中的每一行都是相同的值,但我仍然想要显示它。
示例:
收集的名称收集者ID
A 1
B 1
C 1
D 1
当我将数据源设置为列表时,它会从Collected对象中提取所有数据,但它无法读取ID属性。是否有可能做到这一点?我是否需要创建一个包含所有Collected字段的新对象以及ID的字段,然后使Collector对象获取新对象的列表?
作为参考,这是我设置数据源并尝试设置列的方式。 ID是数据网格视图中列的名称。
this.dataGridView.DataSource = collector.CollectedList;
this.ID.DataPropertyName = Collector.PropertyNames.CollectionID.toString();
Collector类很简单,只有两个字段。还有其他一些方法,但我不确定它们是否与问题相关。
public class Collector : BindableObject {
public enum PropertyNames{
CollectionID,
CollectedList
}
private BindingList<Collected> _collectedList = new BindingList<Collected>();
private int _collectionID = -1;
public Collector() {}
public int CollectionID {
get {return _collectionID;}
set {
if (_collectionID != value) {
_collectionID = value;
OnPropertyChanged(PropertyNames.CollectionID.ToString());
}
}
}
public BindingList<Collected> CollectedList {
get {return _collectedList;}
set {
if (_collectedList != value) {
_collectedList = value;
OnPropertyChanged(PropertyNames.CollectedList.ToString());
}
}
}
基本上,我试图使用与我与数据网格视图关联的主要源不同的数据源添加文本列(不是组合框)。