2011-12-15 8 views
0

私はDropDownList(id colors)コントロールがある単純なページ(Default.aspx)を行っています。 PageLoadメソッドの項目を簡単に取り込むことができます。asp.netのクラスファイルからWebコントロールにアクセスする4

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     colors.Items.Add("red"); 
    } 
} etc. .... 

しかし、それは(私がAppCodeフォルダにあるいくつかのクラスファイルを意味する)外部のクラスファイルからコントロールを充填することができます。

ありがとうございました。

答えて

2

もちろんです。たとえば、あなただけのDropDownListに値のIEnumerable<T>をバインドするために、いくつかの一般的なユーティリティメソッドを作成したい場合は、あなたがメソッドの引数として、それらのオブジェクトの両方を渡したい:

public static void BindDropDownControl<T>(DropDownList dropDown, IEnumerable<T> listValues) 
{ 
    // logic to bind the values to the DropDownList 
} 

この作品はどのようなものです実際、DropDownListのようなクラスはreference typesです。つまり、メソッドのdropDownのインスタンスは、ページのフォームのコピーではなく、ページのものと同じものです。したがって、この方法でそれに加えられた変更は、ページ自体のDropDownListに適用されます。

だから、ページからそれを呼び出すために、あなたのような何かをしたい:

colorValuesリストにバインドする値の一部リストである

を。 (HttpUtilsは、上記のメソッドを含むクラスの名前ですが、任意の名前を付けることができます)。

0

1つのオプションは、カラーオプションがあらかじめ用意されたカスタムのドロップダウンサーバーコントロールを作成することです。あるいは、色をデータベーステーブルabdに格納することもできます。ドロップダウンリストはdbから取り込むことができます。私は他のクラスファイルからサーバーコントロールを移植しようとしたことはありません。このような状況では、私はおそらくカスタムサーバーコントロールを使用します。

+0

私はあなたのソリューションを理解していますが、いくつかのドロップダウンリストに色を設定する必要があるときはいつでも呼び出すことができる関数が必要です – polohy

0

それは結局のところオブジェクト参照です。カプセル化を検討することが重要です。ドロップダウンリストにバインドしても問題ありませんか?リストボックス、チェックボックスリスト、グリッドビューなどはどうでしょうか?Webサーバーコントロールの知識を持つ他のコンポーネントが必要ですか?理想的にはない。 WebサーバーコントロールはUIの関心事であり、データ/ロジックの関心事ではありません。

関連する問題