我在 AutoPostBack 设置为 True 的页面上有一个下拉列表控件。在页面的初始加载时,我在 DropDownList 中的某些 ListItems 上设置了一个 CSS 类。生成的 HTML 如下所示:
<select id="mySelect">
<option value="1">First</option>
<option value="2" selected="selected">Second</option>
<option value="3" class="favorite">Third</option>
<option value="4">Fourth</option>
<option value="5" class="favorite">Fifth</option>
</select>
回发后,ListItems 失去了它们的 CSS 类。现在看起来像这样。
<select id="mySelect">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
<option value="4">Fourth</option>
<option value="5" selected="selected">Fifth</option>
</select>
有什么方法可以让下拉列表在回发后记住各个 ListItem 上的 CSS 类,或者我是否需要在回发后以某种方式自己设置类?
这是将 CSS 添加到下拉列表的代码。它在 PageLoad 上运行但不在 PostBack 上运行。
foreach(MyItem _myItem in MyItemList)
{
ListItem _listItem = new ListItem();
_listItem.Value = _myItem.ID.ToString();
_listItem.Text = _myItem.Title;
if(_myItem.IsFavorite)
{
_list.Attributes["class"] = "favorite";
}
ddlMyDropDown.Items.Add(_listItem);
}
科里
最佳答案
编辑:
这对我有用。尝试这样的事情
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
LoadData();
}
LoadStyle();
}
private void LoadData()
{
DropDownList1.Items.AddRange(Enumerable.Range(0, 10).Select(x => new ListItem(x.ToString())).ToArray());
}
private void LoadStyle()
{
foreach (ListItem item in DropDownList1.Items)
{
if (int.Parse(item.Value) % 2 == 0)
{
item.Attributes.Add("class", "test");
}
}
}
关于asp.net - ASP.NET 下拉列表控件能否在回发时保留列表项类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5396420/