cast dropdownlist datasource

时间:2012-11-14 06:11:53

标签: c# asp.net devexpress

有没有办法将DropDownlist数据源强制转换为数据表。

以下是gridview的可能。但不适用于下拉列表。

DataTable dtSource = (DataTable)DropDownListCNPPRO.DataSource;

2 个答案:

答案 0 :(得分:0)

DataSource属性只是内部变量的getter和setter方法。在判断问题内容时,我猜测该属性是某种IDataSource类型,它是用DataTable类实现的。

但是,我的观点是,当且仅当:

时,您可以将其他属性转换为T
  • T是该属性的基类或接口
  • T不是基类,而是继承人,之前它或它的后代已设置到该属性。像这样:

实施例

interface IFoo { }
class Foo1 : IFoo { }
class Foo2 : IFoo { }

class Bar
{
    internal IFoo Foobar { get; set; }
}

void main()
{
    Bar bar = new Bar();
    bar.Foobar = new Foo1();

    IFoo instance1 = bar.Foobar; // Ok.
    Foo1 instance2 = (Foo1)bar.Foobar; // Bad practice, but ok.

    Foo2 instance3 = (Foo2)bar.Foobar; // Bad practive plus an exception.
    Foo2 instance3 = (Foo2)(Foo1)bar.Foobar; // Still an exception.
    Foo2 instance3 = (Foo2)(IFoo)(Foo1)bar.Foobar; // Still a fail.
}

答案 1 :(得分:0)

这绝对取决于数据源是什么。如果你替换

DropDownListCNPPRO.DataSource

通过“真实”数据源(例如通用列表),编译器会告诉您是否可以转换。