C# 处理下拉列表

C# 处理下拉列表,c#,asp.net-mvc,jquery,C#,Asp.net Mvc,Jquery,我是在asp.net mvc上新开发的,甚至是使用jquery更新的,所以这是我的问题:我有一些下拉列表,它们是使用另一个下拉列表或文本框的数据自动填充的,这些下拉列表的数据用于另一个下拉列表,就像一个链一样,我现在的问题是下拉列表有时只有一个答案/选项,如果我尝试选择这个选项,jquery不会激活$anything.change事件,因为我只有一个选项,我如何处理它 例如,我需要红色圆圈的数据来填充蓝色圆圈,但红色圆圈只有一个选项,如果我单击“无”按钮,则会发生任何情况 代码: $docume

我是在asp.net mvc上新开发的,甚至是使用jquery更新的,所以这是我的问题:我有一些下拉列表,它们是使用另一个下拉列表或文本框的数据自动填充的,这些下拉列表的数据用于另一个下拉列表,就像一个链一样,我现在的问题是下拉列表有时只有一个答案/选项,如果我尝试选择这个选项,jquery不会激活$anything.change事件,因为我只有一个选项,我如何处理它

例如,我需要红色圆圈的数据来填充蓝色圆圈,但红色圆圈只有一个选项,如果我单击“无”按钮,则会发生任何情况

代码:

$document.readyfunction{

            $("#tbClave1").autocomplete({
                minLength: 1,
                source: getClave1,
                select: function(event, ui) {
                    updateClave2(ui.item.value);

                }
            });

            $("#tbClave1").change(function() {
                if ($("#tbClave1").val().length == 4) {
                    updateClave2($("#tbClave1").val());
                }
            });

            $("#ddClave2").change(function() {
                updateClave3($("#tbClave1").val(), $("#ddClave2").val());
                updateNombre($("#tbClave1").val(), $("#ddClave2").val());
                if ($("#ddTipoArticulo").val() == "A" ||
                    $("#ddTipoArticulo").val() == "B" ||
                    $("#ddTipoArticulo").val() == "L") {
                    updatePrecioA($("#tbClave1").val(), $("#ddClave2").val());
                } else { 
                    if ($("#ddTipoArticulo").val() == "N" ||
                         $("#ddTipoArticulo").val() == "H"){
                         updatePrecioB($("#tbClave1").val());
                    }
                }
            });

            $("#ddClave3").change(function() {
                updateClave4($("#tbClave1").val(), $("#ddClave2").val(), $("#ddClave3").val());
            });
        });
编辑:我如何填写下拉列表之一的示例

Jquery

函数updateClave2cod{

            var dd = document.getElementById("ddClave2");
            dd.options.length = 0;
            dd.options[0] = new Option("Espere...");
            dd.selectedIndex = 0;
            dd.disabled = true;
            codigo = cod;
            tipoArt = $("#ddTipoArticulo").val();
            // Control de errores
            $("#ddClave2").ajaxError(function(event, request, settings) {
                dd.options[0] = new Option("No se Cargaron Datos");
            });
            // Obtenemos los datos...
            $.ajax({
                url: '/Home/GetClave2',
                dataType: 'json',
                data: { words: codigo, tipoArticulo: tipoArt },
                success: function(data, textStatus, jqXHR) {
                    $.each(data, function(i, item) {
                        dd.options[i] = new Option(item["clave2"], item["clave2"]);
                    });
                    dd.disabled = false;
                }
            });
        }
控制器

public ActionResult GetClave2字符串单词,字符串tipoArticulo{ 列出mySource=miConexion.clave2用户名、密码、单词、tipoArticulo; 返回JsonmySource;
}

正如Alex Mendez所写,在每个dropdownlist中添加一个默认项,并使用类似“选择一”的文本似乎是最简单的答案。如果用户重新选择默认的“选择一”选项,您还需要进行一些处理。要将默认值添加到.Net下拉列表,请尝试以下代码:

YourListID.Items.Insert(0, new ListItem("Select One", "Select One");
或:

编辑错过了MVC 在MVC中,当您绑定初始ViewData时,只需确保选择最简单的一个:

Dictionary<int, string> dictionaryList = DropDownListItems();
ViewData["ModelData"] = new SelectList(dictionaryList, "Key", "Value")

为什么不在下拉列表中添加一个“选择一”选项并使其成为必需的选项?这样,它会触发一个选择更改事件。')因为每次该选项不同时,它并不总是相同的选项,这取决于以前的选项,您在图片中看到的所有三个下拉列表都会自动填充。您可以在每个下拉列表中都有一个“选择一”选项每个选项中都有不同的选项。因此,每次你在dropdown1中选择一个选项时,你都会清除dropdown2上的选项,添加select One选项,然后添加基于dropdown1选择的选项。哦,对不起,我第一次不理解你,我是如何做到的?有所有答案。ASP.NET M中有n个服务器控件的概念但是如果我在jqeury中填写dd?我将编辑我的问题,而使用JQuery进行编辑只需要很少的工作。请查看此链接。请参阅我的博客文章
Dictionary<int, string> dictionaryList = DropDownListItems();
ViewData["ModelData"] = new SelectList(dictionaryList, "Key", "Value")