【问题标题】:Databind multiple Lists to a grid将多个列表数据绑定到网格
【发布时间】:2011-12-05 17:13:51
【问题描述】:

我需要将多个列表或绑定列表(应该没有区别)数据绑定到一个网格。这些列表都具有相同的大小,但对象类型不同。这些列表中不同对象的属性应显示为彼此相邻的列,就好像列表 A 的第一个元素属于列表 B 的第一个元素,依此类推。

到目前为止,我将数据复制到 DataTable 中并将其用作数据源,但由于各种原因,这已经不可能了。

我知道直接绑定多个列表是不可能的,但我不知道如何开始。我确实读过一些关于数据绑定的文章,但看起来我必须编写很多代码才能让它工作,使用 CurrencyManager 等等。

是否有一个简单的解决方案可以帮助我?也许是一个可以完成所有这些的包装类? 如果没有,谁能给我一些提示,哪些接口必须实现,还有什么要记住的?

【问题讨论】:

  • 显然,您需要做的是展平这些对象并拥有一个列表(加入各种列表,就像您显然使用数据表方法所做的那样)并将它们显示在网格上。您的问题不清楚的是,当您说“各种原因不再可能”时,您指的是什么?这是为什么呢?

标签: c# .net data-binding


【解决方案1】:

如果你不能将这些不同的对象变成一个对象,那么这不是一个可绑定的列表。

可以在一个全新的对象列表中对这些对象中的每一个做一个浅拷贝,然后即时创建它们:

Object MyFirstObject;
Object MySecondObject;

void BindableClass( Object class_1, Object class_2 )
{
    MyFirstObject = class_1;
    MySecondObject = class_2;
}

public String _firstColumnString { get { return MyFirstObject.FirstColumnString; } }    
public String _secondColumnString { get { return MySecondObject.SecondColumnString; } }

更好的是,在 BindableClass 构造函数中只提取您需要的信息。

void BindableClass( Object class_1, Object class_2 )
{
    _firstColumnString = MyFirstObject.FirstColumnString;
    _secondColumnString = MySecondObject.SecondColumnString;
}

(但现在你真的只剩下一个列表了!)

然后您可以通过执行以下操作来创建对象:

for (int i = 0; i < TheListSize; i++)
{
     ABindableList list = new BindableClass( FirstList[i], SecondList[i] );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多