首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DataTable到BindingList

从DataTable到BindingList
EN

Stack Overflow用户
提问于 2009-07-23 17:43:16
回答 1查看 5.1K关注 0票数 2

我正在从DataTable转到BindingList。我将DataTable绑定到DataGrid对象。

在这里,我的困境:虽然我当然看到了切换的好处,但我的情况会使它变得有点复杂,我想知道是否值得切换。

我的设想是:我有一个DataGrid,它可以显示化学样品。有5种样例类型,在这些类型中,网格中的列将因每种类型而不同(有时基于其他参数在同一类型内)。有些列保持不变,有些列存在于3种类型中,有些列在4种类型中,等等,不完全是简单继承的情况。目前,我有一个DataTable,因为我可以加载任何我想要的列,而不必为每个样例类型设置属性--如果我使用BindingList,这就是我必须做的事情。但是这样的话,BindingList将使引用示例属性变得更加容易。

这是我第一次接触这个对象(BindingList),所以欢迎任何建议。据我所知,BindingList绑定到属性。所以如果我有:

代码语言:javascript
复制
public class Sample
{
    protected string m_seq;
    protected string m_id;
    protected string m_weight;
    protected string m_units;

    public Sample()
    {
    }

    public string Seq
    {
        get { return m_seq; }
        set { m_seq = value; }
    }

    public string Id
    {
        get { return m_id; }
        set { m_id = value; }
    }

    public string Weight
    {
        get { return m_weight; }
        set { m_weight = value; }
    }

    public string Units
    {
        get { return m_units; }
        set { m_units = value; }
    }

} //end of class

如果我有以下内容,网格将绑定到示例类的属性

代码语言:javascript
复制
BindingList samples = new BindingList<Sample>();

这意味着我将有6种类型的样本,都定义了属性。最终的继承结构可能很复杂,所以我想知道它是否值得。欢迎任何反馈意见。

我使用的是Windows2.0,它是c#应用程序。

EN

回答 1

Stack Overflow用户

发布于 2009-07-23 19:28:20

如果您正在使用DataGrid,是否有可能切换到DataGridView?会更加灵活..。

我不完全确定这个问题,但是:

如果属性是固定的,但不想显示所有列

然后,只需在添加数据之前设置AutoGenerateColumns = false,然后自己添加所需的列;或者,将其保留为启用状态,并在不希望看到的列上设置.Visible = false

如果属性在运行时是动态的

然后就变得棘手了;您进入了System.ComponentModel的更黑暗的角落;您可以通过ITypedList (允许每个列表实例定义不同的)或TypeDescriptionProvider (允许在每种类型或每一个列表实例中定义不同的定义)来实现这一点,但是其中只有TypeDescriptionProvider才能与BindingList<T>一起工作。老实说,我不认为这是您的意思;如果是的话,坚持使用DataTable就更简单了(两者都很难正确实现)。

我希望这会有所帮助;我希望它就像隐藏一些专栏一样简单!如果我没抓住重点,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1173359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档