c#之刷新下拉列表但保留旧的选定值 JSON

虾米姐 阅读:39 2025-12-25 22:24:30 评论:0

我的一个 CSHTML 文件中有一些 javascript 代码

$.getJSON("@Url.Action("GetLanguages")", function (data) { 
        debugger; 
        var $languages = $('.supplier-languages select'); 
        $languages.children().filter(function () { 
            return $(this).attr('value'); 
        }).remove(); 
        $.each(data, function () { 
            debugger; 
            var option = $('<option />', { 
                text: this.Text, 
                value: this.Value 
            }); 
 
            $languages.append(option.clone()); 
        }); 
    }); 
    jSnap.modals.removeModal(); 

基本上,数据是选择列表项的列表,第一部分查找所有 vendor 语言 div 并选择选择,然后我们删除下拉列表中具有值的所有列表项(因此“请选择...”我拥有的默认列表项不会被删除,因为它没有分配值),一旦删除了所有填充的项目,我就会迭代我的数据变量并再次填充我的所有下拉列表。

这段代码工作正常,但我遇到的问题是,用户转到页面并选择一些选项,然后用户通过新打开的 jquery 模式向下拉列表添加一个新选项,当模式关闭时上面的代码已运行,但他们选择的选项现在没有设置回请选择。如何保持选中旧值并将它们放回到我的下拉列表选项中?

请您参考如下方法:

这是工作代码

<script> 
    $.getJSON("@Url.Action("GetLanguages")", function (data) { 
 
        var $languages = $('.supplier-languages select'); 
 
        $languages.each(function () { 
            var $language = $(this); 
            var selectedValue = $language.val(); 
 
            $language.children().filter(function () { 
                return $(this).attr('value'); 
            }).remove(); 
 
 
            $.each(data, function () { 
                debugger; 
                var option = $('<option />', { 
                    text: this.Text, 
                    value: this.Value, 
                }); 
 
                if (this.Value == selectedValue) option.attr('selected', 'selected'); 
 
                $language.append(option.clone()); 
            }); 
        }); 
    }); 
    jSnap.modals.removeModal(); 
</script> 

现在基本上,它的作用与上面相同,但它一次为每个下拉列表 1 执行此操作,而不是遍历所有下拉列表,我们获取 selectedValue,然后删除所有子项,然后填充每个下拉列表使用新选项,并检查保存的选定值是否等于我们要填充下拉列表的任何选项,如果是这样,我们然后将选定的选项设置为选中,

希望这可以帮助其他人。


标签:C#
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号