1

DropdownListがあり、そのデータソースが文字列のリストであるとします。DataValueをリスト内の要素のインデックスにします。

これを行う方法はありますか?

ありがとう

4

3 に答える 3

3

計算ではなく、バインドする値が必要です。これは、強力なクラスを使用して事前に行うか、次の例では、すばやく簡単に匿名タイプを使用して行います。

List<string> ds = yourlist;
ddl.DataSource = yourlist
    .Select(s => new 
    { 
        Text = s, 
        Value = yourlist.IndexOf(s) 
    })
    .ToList();
ddl.DataValueField = "Value"; 
ddl.DataTextField = "Text";
ddl.DataBind();
于 2013-03-21T19:30:42.907 に答える
1

Flemのソリューションと非常に似ていますが、より単純です。Selectメソッドのオーバーロードを1つ使用し、現在itemの次indexに渡されます。

ddl.DataSource = arrayOfStrings.Select((text, index) => new { text, index })
                               .ToList();

ddl.DataValueField = "index"; 
ddl.DataTextField = "text";
ddl.DataBind();
于 2013-03-21T19:33:29.313 に答える
0

データテキストと値のフィールドをデータセットの特定の列に設定していることに注意してください。

SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString);
         DataSet ds = new DataSet();
         SqlCommand cmd = new SqlCommand("Select * from country", cn);
         SqlDataAdapter adp = new SqlDataAdapter(cmd);
         adp.Fill(ds);
         Dropdownlist1.DataSource = ds;
         Dropdownlist1.DataTextField = "CountryName";
         Dropdownlist1.DataValueField = IndexOf("CountryID");
         Dropdownlist1.DataBind();
于 2013-03-21T19:30:06.780 に答える