[英]bind list to dropdownlist, what to do with value?
我将List绑定到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,以便获得上面的下拉列表。
谢谢
如果您能够更改源的类型,我建议您使用字典。 你可以这样做:
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
你可以做的是像这样手动创建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" />
这是另一种方式。 将DataSet表转换为列表并绑定到下拉列表。
var filter = from dr in ds.Tables[0].AsEnumerable()
where (dr.Field<int>("FilterID") == 1)
select new
{
FilterID = dr.Field<int>("FilterID"),
FilterName = dr.Field<string>("FilterName")
};
ddlSample.DataSource = filter;
ddlSample.DataTextField = "FilterName";
ddlSample.DataValueField = "FilterID";
ddlSample.DataBind();
filter = null; // null the var
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.