2011-12-22 61 views
5

我将List绑定到DropDownList。但是我想给每个列表项的值赋予其他值。绑定列表到dropdownlist,如何处理值?

我有以下DDL和列表:

List<string> 

运动,排球,橄榄球

<select> 
    <option selected="selected" value="0"> Alle soorten</option> 
    <option value="sport">sport</option> 
    <option value="volleyball">volleyball</option> 
    <option value="rugby">rugby</option> 
</select> 

,但我想以下(数值ID)

<select> 
    <option selected="selected" value="0"> Alle soorten</option> 
    <option value="1">sport</option> 
    <option value="2">volleyball</option> 
    <option value="3">rugby</option> 
</select> 

我如何需要创建一个List,以便我可以得到上面的下拉列表。

感谢

+0

你是如何填补了列表,也许你也有ID,所以KeyValue对应该是你应该看到的 – V4Vendetta 2011-12-22 09:58:59

+0

@ V4Vendetta aha,你的意思是字典吗?对于每个项目也是价值。 KeyValuepair只有一个项目是不是? – Ozkan 2011-12-22 10:00:11

回答

9

如果你能够改变你的源的类型,我会建议使用字典。你可以这样来做:

var source = new Dictionary<int, string>(); 
source.Add(0, "Sports"); 
source.Add(1, "Football"); 
dropDown.DataSource = source; 
dropDown.DataTextField = "Key"; 
dropDown.DataValueField = "Value"; 
dropDown.DataBind(); 

这将导致这样的:

<select name="DdlCat2" id="DdlCat2" class="cats"> 
    <option selected="selected" value="Sports">0</option> 
    <option value="Football">1</option> 
</select> 

稍后,您可以访问这样的ID或价值:

dropDown.SelectedItem.Value 
dropDown.SelectedItem.Text 
4

你可以做的是手动创建时listItems这样的:

List<string> yourValues; 
for(var i=0; i < yourValues.Count; i++) 
    YourDropDown.Items.Add(new ListItem(yourValues[i], i.ToString()); 

或者你可以创建一个临时变量和您的下拉列表与LINQ查询,像这样绑定:

List<string yourValues; 
var index = 0; 
YourDropDown.DataSource = yourValues.Select(x => new { Text = x, Value = index++ }); 
YourDropDown.DataBind(); 

,并结合起来,与标记:

<asp:DropDownList ID="YourDropDown" DataValueField="Value" DataTextField="Text" runat="server" /> 
+0

简单干净。 – 2016-10-14 09:11:07