假设我有一个 DropdownList,它的数据源是一个字符串列表。我希望 DataValue 成为列表中元素的索引。
有没有办法做到这一点?
谢谢
您需要一个值来绑定而不是计算。使用强类或在以下示例中使用快速简便的匿名类型预先执行此操作。
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();
与 Flem 的解决方案非常相似,但更简单。它使用一个重载的Select
方法,在它旁边item
是index
它被传递的地方。
ddl.DataSource = arrayOfStrings.Select((text, index) => new { text, index })
.ToList();
ddl.DataValueField = "index";
ddl.DataTextField = "text";
ddl.DataBind();
在这里,注意我将数据文本和值字段设置为我的数据集中的特定列。
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();