在我的 asp.net 项目中,我使用修改后的 Listbox 控件来显示一个多选下拉框,我使用 Select2() 直观地呈现它;
我设置 AutoPostBack="True" 以便在每次操作后我都可以更改代码中的对象。但是,因为 Select2 multple 不会更改<select>
选项本身,所以 ViewState 不会将该项目识别为已选中。
我怀疑如果使用 Select2() 选择一个项目会改变 中的对应项<option>
,<select>
ViewState 会在重新加载页面时获取更改并将其标记为选中。
页面:
<cc1:MultiSelector ID="txtUsers" runat="server" CssClass="select" multiple="multiple" OnSelectedIndexChanged="txtUsers_SelectedIndexChanged"></cc1:MultiSelector>
多选器控制:
public class MultiSelector : ListBox
{
public IEnumerable SelectedItems
{
get
{
ListItemCollection items = this.Items as ListItemCollection;
return this.Items.OfType().Where(item => item.Selected);
}
}
}
代码背后:
protected void txtUsers_SelectedIndexChanged(object sender, EventArgs e)
{
// Do something with the selected items
}
请告知我如何将相应的 HTML 元素设置为选中状态。
<option value='3' selected="selected">Item3</option>
此外,删除现有项目也不起作用。很可能出于相同的原因,选择的属性永远不会被删除。