2013-03-21 71 views

回答

1

与弗莱姆的解决方案非常相似,但更简单。它使用Select方法的一个过载,其中在当前item旁边的是它被传递的index

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

ddl.DataValueField = "index"; 
ddl.DataTextField = "text"; 
ddl.DataBind(); 
+0

@IIyaIvano我喜欢它,但对我的帖子的评论本来是合适的。 +1。 – 2013-03-21 19:42:14

+0

@flem当我看到你发布了你的帖子时,我几乎已经写完了我的帖子,所以这并不像我完全窃取你的答案。对不起,如果有任何不好的想法出现在你脑海中 – 2013-03-21 19:43:53

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(); 
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(); 
+1

+1 Flemster,欢迎回来;) – mattytommo 2013-03-21 19:40:49