-1

DropDownlist データソースをデータ テーブルにキャストする方法はありますか。

グリッドビューでは以下が可能です。ドロップダウンリストではありません。

DataTable dtSource = (DataTable)DropDownListCNPPRO.DataSource;
4

2 に答える 2

0

プロパティは、内部変数のDataSource単なるゲッターメソッドとセッターメソッドです。質問の内容から判断すると、プロパティはクラスで実装されたある種の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.
}
于 2012-11-14T09:39:19.027 に答える
0

これは、データソースが何であるかに完全に依存します。交換すれば

DropDownListCNPPRO.DataSource

「実際の」データソース (例: 一般的なリスト) によって、コンパイラは変換できるかどうかを教えてくれます。

于 2012-11-14T09:57:17.877 に答える