You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Multiselect下拉框动态追加项无法在UI显示的问题

解决Bootstrap Select多选下拉框动态追加选项后UI不显示的问题

你遇到的问题核心原因是:Bootstrap Select插件会将原生<select>元素转换为自定义的UI结构,直接通过jQuery修改原生<option>后,插件无法感知到选项的变化,因此新添加的选项不会在自定义UI中显示。同时你的代码还有几处细节问题需要修正:


具体解决方案

1. 移除重复的jQuery引入

页面同时引入了jQuery 3.6.0和3.5.1,版本冲突会导致插件绑定异常,删除其中一个(建议保留3.6.0版本)。

2. 统一jQuery对象引用

由于启用了noConflict(),$可能已不再指向jQuery,需统一使用你定义的$s或$j引用,避免混合调用导致的对象找不到问题。

3. 强制刷新Bootstrap Select UI

在完成所有选项追加操作后,必须调用插件的refresh和render方法,让插件重新生成UI结构,识别新添加的选项。

4. 修正JSON格式

原代码中请求数据'{flag:"7"}'不符合严格JSON规范,键名必须用双引号包裹,否则后端可能无法正常解析。


修改后的完整代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="dummy.aspx.cs" Inherits="WREFKAIProjevtWIPTracker.WIPTracker.dummy" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css' />
    <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta2/css/bootstrap-select.min.css' />
    
</head>
<body>
    <form id="form1" runat="server">
        <select id="ddlmultiselect" class="selectpicker" multiple aria-label="Default select example" data-live-search="true">
            
        </select>
        <script src='https://code.jquery.com/jquery-3.6.0.min.js'></script>
        <script src='https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js'></script>
        <script src='https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta2/js/bootstrap-select.min.js'></script>

        <script>
            var $j = jQuery.noConflict();
            $j(function () {
                BindDDL();
            });
            function BindDDL() {
                var $s = jQuery.noConflict();
                // 修正JSON格式,键名用双引号包裹
                var d = '{"flag":"7"}';
                $s.ajax({
                    type: "POST",
                    url: "../WIP.asmx/BindGrid",
                    data: d,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",        
                    success: function (Response, status, xhr) {
                        $s("#ddlmultiselect").empty();
                        // 统一使用$s引用jQuery对象
                        $s("#ddlmultiselect").append($s("<option></option>").val(0).html("--Select--"));
                        $s(Response.d).each(function (value, item) {
                            $s("#ddlmultiselect").append($s("<option></option>").val(item.ID).html(item.iValue));
                        });
                        // 刷新插件UI,让新选项显示出来
                        $s("#ddlmultiselect").selectpicker('refresh');
                        $s("#ddlmultiselect").selectpicker('render');
                    },
                    error: function (error) {
                        // 可添加错误提示逻辑
                    },
                    complete: function () {
                        // 可添加完成后的清理逻辑
                    },
                    failure: function () {
                        // 可添加失败提示逻辑
                    }
                });
            }
        </script>
    </form>
</body>
</html>

内容的提问来源于stack exchange,提问作者Sumeet Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:47:11