假设我有一个DropdownList,它的数据源是一个字符串列表。我希望DataValue是列表中元素的索引。
有办法做到这一点吗?
由于
答案 0 :(得分: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)
与Flem的解决方案非常相似,但更简单。它使用了一个Select
方法的重载,在当前item
旁边,index
传递它。
ddl.DataSource = arrayOfStrings.Select((text, index) => new { text, index })
.ToList();
ddl.DataValueField = "index";
ddl.DataTextField = "text";
ddl.DataBind();
答案 2 :(得分: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();