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方法,在它旁边itemindex它被传递的地方。

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 回答