按字母顺序显示下拉值

时间:2012-12-03 05:56:13

标签: jquery asp.net-mvc

我的下拉值显示按字母顺序排列。但我不需要这样。因为当我添加值时,它会改变字母顺序。

例如,

我有很多功能

  1. - Designer-- //子功能

  2. 附件设计器

  3. ..等等。

    但我的下拉列表

    1. Accessory Desinger,

    2. - Desinger -

    3. 我的Jquery代码在这里

       $('#dropdown').change(function () {
          $("#dropdown1").show();
          $.ajax({
              url: "/Jobs/dropdown1",
              type: 'GET',
              data: { 'dropdownId': $(this).val() },
              dataType: 'json',
              success: function (response) {
                  if (response.Success) {
                      $('#dropdown1').children().remove();
      
                      $.each(response.dropdown1, dropdown (index, role) {
                          $('#dropdown1').append(
                              '<option value="' + dropdown1.Id + '">' +
                                  dropdown1.Name +
                              '</option>');
                      });
                  }
              },
              error: function (xhr, status, error) {
      
              }
          });
      });
      

      当我点击第一个下拉列表时,它会自动显示第二个下拉列表。

      请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

如果您不知道如何更改服务器端的订单,则必须在客户端进行。

根据您的描述,我收集的结果是一个JSON对象,每个项目都有IdName,并且您希望不是按名称迭代它们,而是通过id迭代它们。 / p>

因此,我建议您对代码进行以下更改:

if (response.Success) {
    $('#Roles').children().remove();

    var results = [];
    // Converting the JSON object into an array
    $.each(response.Roles, function(index, role) {
        results.push(role);
    });

    // Sorting the array items by Id
    results.sort(function(a, b) {
        return a.Id - b.Id;
    });

    $.each(results, function (index, role) {
        $('#Roles').append(
            '<option value="' + role.Id + '">' +
                role.Name +
            '</option>');
    });
}

在将项目添加到Id之前,应该按#Roles对结果集进行排序。