ASP.NETでDropDownListドロップダウンリストコントロールでデータをバインドする4つの方法

4753 ワード

DropDownList Webサーバコントロールにより、ユーザーが事前定義されたリストから1つを選択できるようになります.ListBox Webサーバコントロールとは異なり、ユーザーがドロップダウンボタンをクリックするまでアイテムリストが非表示になっています.また、DropDownListコントロールとListBoxコントロールの違いは、多重選択モードがサポートされていない点にある.
DropDownListのhtmlでのプレゼンテーションはselectに対応していますが、DropDownListがデータをバインドするいくつかの方法を見てみましょう.
一、Array配列をDropDownListに縛る
 
  
string[] Month =new string[7]{ "January", "February", "March", "April", "May", "June", "July" };
this.DropDownList1.DataSource = Month;
this.DropDownList1.DataBind();

この方法はDropDownListに1組のデータのみをバインドすることができ、DropDownListは2種類のデータをバインドすることができる:1はDataTextField、2はDataValueFieldであるため、第1の方法はバインド後のDataTextFieldの値=DataTextFieldの値である.
二、動的Array配列をDropDownListにバインドする
 
  
ArrayList ar = new ArrayList();
for (int i = 1; i <=12; i++)
{
    ar.Add(i+" ");
}
this.DropDownList2.DataSource = ar;
this.DropDownList2.DataBind();

本質的には1~12月に配列に加算され、以下のようになります.
 
  
ArrayList ar = new ArrayList();
ar.Add("1 ");
ar.Add("2 ");
ar.Add("3 ");
ar.Add("4 ");
...
this.DropDownList2.DataSource = ar;
this.DropDownList2.DataBind();

この方法の利点はArrayList.Addの方法は、要素を動的に追加する機能を実現することができます.例えば、DataTableがあります.DataTableの1行のデータを読み出してArraylistに追加します.
私の以下のコードを見てください.
 
  
ArrayList ar = new ArrayList();
DataTable dt=dataset.Tables[0]
foreach (DataRow dr in dt.Rows)
{
    ar.Add(dr[0].ToString());
}

以上のコードは,1つのDataTableからforeach文を用いてTableの1行目のデータのうち1番目の格子の値をループ読み出してArrayListに追加する.
三、HashtableをDropdownlistにバインドする方法の利点は、2つのデータをバインドすることもできます.1つは「key、1つは「value」です.そうすれば、dropdonwlistに2つの異なるデータをバインドすることができます.
 
  
Hashtable Ht = new Hashtable();
Ht.Add("January", "1 ");
Ht.Add("February", "2 ");
Ht.Add("March", "3 ");
Ht.Add("April", "4 ");
Ht.Add("May", "5 ");
Ht.Add("June", "6 ");
Ht.Add("July", "7 ");
this.DropDownList3.DataSource = Ht;
this.DropDownList3.DataValueField = "key";
this.DropDownList3.DataTextField = "value";
this.DropDownList3.DataBind();

四、Objectオブジェクトをdropdownlistにバインドする
まずクラスを追加します.構造は次のとおりです.
 
  
public class ClassMonth
{
    private string _MonthEN = DateTime.Now.ToString("MMMM",System.Globalization.CultureInfo.CreateSpecificCulture("en"));
    private string _MonthCN = DateTime.Now.ToString("MMMM", System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN"));
    public ClassMonth()
    {
        MonthCN = DateTime.Now.ToString("MMMM", System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN"));
        MonthEN = DateTime.Now.ToString("MMMM", System.Globalization.CultureInfo.CreateSpecificCulture("en"));
    }
    public ClassMonth(string cn,string en)
    {
        MonthCN = cn;//
        MonthEN = en;//
       
    }
    public string MonthEN //
    {
       get
        {
            return _MonthEN;
        }
        set
        {
            _MonthEN = value;
        }
    }
    public string MonthCN  //
    {
        get
        {
            return _MonthCN;
        }
        set
        {
            _MonthCN = value;
        }
    }
}

バインド方法
 
  
ArrayList arlist=new ArrayList();
arlist.Add(new ClassMonth("1 ", "January"));
arlist.Add(new ClassMonth("2 ", "February"));
arlist.Add(new ClassMonth("3 ", "March"));
arlist.Add(new ClassMonth("4 ", "April"));
arlist.Add(new ClassMonth("5 ", "May"));
this.DropDownList4.DataSource = arlist;
this.DropDownList4.DataValueField = "MonthEN";
this.DropDownList4.DataTextField = "MonthCN";
this.DropDownList4.DataBind();