将多个列表数据绑定到网格

时间:2011-12-05 17:13:51

标签: c# .net data-binding

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

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

我知道直接绑定多个列表是不可能的,但我不知道如何启动它。我确实读过一些关于数据绑定的内容,但看起来我需要编写很多代码才能使用它,使用CurrencyManager等等。

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

1 个答案:

答案 0 :(得分:0)

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

可以在一个全新的对象列表中对这些对象进行浅层复制,并即时创建它们:

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