处理下拉列表

时间:2012-02-29 12:52:03

标签: c# asp.net-mvc jquery

我是asp.net mvc的新开发者,甚至更新的使用jquery,所以这是我的问题:我有一些下拉列表,使用另一个下拉列表或文本框的数据,以及那些数据填充dinamically下拉用于另一个下拉,就像一个链,我的问题现在是下拉有时只有一个答案/选项,如果我尝试选择该选项,jquery不会激活$(“#anything”) .change()事件,'因为我只有一个选项,我如何处理它?<​​/ p>

http://imageshack.us/photo/my-images/20/sinttulolp.jpg/

例如,我需要红色圆圈的数据来填充蓝色圆圈,但红色圆圈只有一个选项,如果我点击没有任何反应

代码:

$(document).ready(function(){

            $("#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的

function updateClave2(cod){

            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(string words,string tipoArticulo){              列出mySource = miConexion.Clave2(用户名,密码,单词,tipoArticulo);              返回Json(mySource);          }

1 个答案:

答案 0 :(得分:0)

正如Alex Mendez写的那样,在每个下拉列表中添加一个默认项目,其中包含“Select One”等文本,这似乎是最简单的答案。如果用户重新选择默认的“选择一个选项”,您还需要进行一些处理。要在.Net下拉列表中添加默认值,请尝试以下代码:

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

或:

<asp:DropDownList ID="YourListID" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="Select One" Value="Select One" Selected="true" />
</asp:DropDownList>
编辑(错过了MVC) 在MVC中,当你绑定你的初始ViewData时,一定要确保你的“选择一个”在liest中:

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