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 绑定DropDownList

asp.net中用datatable给dropdownlist绑定数据

使用 ASP.NET 的 DropDownList 中的错误

在ASP.NET MVC中使用DropDownList

如何给DropDownList控件设置样式(ASP.NET MVC)

用于下拉显示数据的 asp.net dropdownlist mouseover 事件