Asp .net dropdownlist SelectedItem 在下拉列表中清除后不会更改
Posted
技术标签:
【中文标题】Asp .net dropdownlist SelectedItem 在下拉列表中清除后不会更改【英文标题】:Asp .net dropdownlist SelectedItem doesn't change after clear in dropdownlist 【发布时间】:2021-06-03 00:08:51 【问题描述】:我正在使用带有 jquery Select2 的 asp: DropDownList 组件。它有效,但我希望在清除 DropDownList 中的项目时更改 DropDownList SelectedItem 属性。据我了解,当我清除该项目时,它正在更改,但由于 PostBack 再次回到以前的状态。
在aspx文件中是这样的;
<asp:DropDownList
ID="countriesDdl"
AutoPostBack="true"
runat="server"
class="js-example-placeholder-single" Width="200">
</asp:DropDownList>
Select2() 的脚本;
<script type="text/javascript">
$(document).ready(function ()
$("#<%=countriesDdl.ClientID%>").select2();
$(".js-example-placeholder-single").select2(
placeholder: "Select a code",
allowClear: true,
selectOnClose: false
);
);
</script>
Page_Init();
countriesDdl.DataSource = countries;
countriesDdl.DataTextField = "TEST";
countriesDdl.DataValueField = "TESTID";
countriesDdl.DataBind();
【问题讨论】:
你是在服务器端初始化 DropDowList 吗?如果是这样,这个初始化是在 !IsPostback 中吗? 而且...您在服务器端数据源中有一个“空”值吗?如果控件项中没有此值,我认为 DropDownList 无法将值设置为空。此外,您似乎两次调用 select2 。一个是 DDL id,另一个是 css 类。无论如何,我不认为这可能是一个问题。大多数 jquery 插件允许多次调用而没有副作用。 是的,它是在服务器端初始化的。并在 !IsPostback if 条件下进行初始化。我在数据源中没有任何空值,它们都是填充的键值对。我也想,但我没有任何解决方案。只是一种感觉:) 所以,你是对的。我更改为一个 select2() 初始化,但仍然无法正常工作。非常感谢! 请问一下,我理解正确:选择国家时DDL按预期工作,但选择空时不工作?在这种情况下,您可能需要在 .Databind() 之后添加如下内容:countryDdl.Items.Insert(0, new ListItem("Select a code", "")); 嘿,谢谢!我做到了。添加 "countriesDdl.Items.Insert(0, new ListItem("Select a code", ""));" 后它没有工作BindData() 之后的行。但是,在我使用占位符对象将相同的 Id 添加到 Select2() 初始化程序之后! 【参考方案1】:我有一个解决方案。这可能是一种解决方法,但对我有用; 我在 DropDownList.DataBind() 调用后的 Page_Init() 函数中添加了静态数据。 静态数据;
countriesDdl.Items.Insert(0, new ListItem Text = "Select a code", Value = "0" );
但这还不够。在初始化 Select2 组件时,我们必须确定占位符的 id,该占位符必须与上述 LisItem.Value 属性值相同。 比如这样;
<script type="text/javascript">
$(document).ready(function ()
$("#<%=countriesDdl.ClientID%>").select2(
placeholder:
id: 0,
text: "Select a code"
,
allowClear: true
);
);
</script>
【讨论】:
以上是关于Asp .net dropdownlist SelectedItem 在下拉列表中清除后不会更改的主要内容,如果未能解决你的问题,请参考以下文章
asp.net中用datatable给dropdownlist绑定数据
使用 ASP.NET 的 DropDownList 中的错误