2016-02-09 5 views
1

У меня есть таблица, где в каждой строке для каждого идентификатора имеется столбец «Клиент». Когда пользователь нажимает на строку, он может изменить клиент. Я использую jquery.dialog для этой операции. Когда появляется диалоговое окно, пользователь видит раскрывающийся список с Клиентами. Как я могу сделать это после появления диалогового окна, пользователь видит текущего клиента в качестве выбранного элемента в раскрывающемся списке? Я попытался, как показано ниже:Показать значение в раскрывающемся списке

onDblClickRow: function (row, $element) { 
    $.getJSON('/ManageProjects/GetAvaibleClients/', function (clients) { 
     if (clients.length == 0) { 
      $('#clientNameEdit').empty(); 
      $('#clientNameEdit').append('<option value="0">Tasks</option>'); 
     } 
     $.each(clients, function (index, clientt) { 
      $('#clientNameEdit').append("<option value='" + clientt.Value + "'>" + clientt.Text + "</option>"); 
     }); 
    }) 
    var currentClient = row.clientName; // Client name from Row 
    $('#clientNameEdit select').val(currentClient); // Tried to set like that 
} 

, но не работает

+0

Заменить '$ ('# clientNameEdit select'). Val' to' $ ('# clientNameEdit'). Val'. Похоже, что '# clientNameEdit' - это' select'. –

+0

Также не работает :( – miechooy

+0

+ вставить строки, начинающиеся с 'var currentClient = row.clientName;' в обратный вызов '.getJSON' –

ответ

0

Следующие изменения в фрагмент кода следует сделать трюк:

onDblClickRow: function (row, $element) { 
      $.getJSON('/ManageProjects/GetAvaibleClients/', function (clients) { 
       if (clients.length == 0) { 
        $('#clientNameEdit').empty(); 
        $('#clientNameEdit').append('<option value="0">Tasks</option>'); 
       } 
       $.each(clients, function (index, clientt) { 
        $('#clientNameEdit').append("<option value='" + clientt.Value + "'>" + clientt.Text + "</option>"); 
       }); 
       var currentClient = row.clientName; // Client name from Row 
       $('#clientNameEdit').val(currentClient); // Tried to set like that but doesn't work     
      }); 

Как было указано выше, если вы делаете currentClient = row.clientName вне успеха вызова AJAX, то, вероятно, огонь до dropdown заполняется и, следовательно, не имеет никакого эффекта.

Во-вторых, селектор jQuery '#clientNameEdit select' должен быть только '#clientNameEdit', поскольку он относится к самому выпадающему, а не к родительскому.

+0

$ ('# clientNameEdit'). Val (currentClient); после этой строки dropdown be blank – miechooy

+0

просто оценивает значение, возвращаемое var currentClient = row.clientName. Это может быть причиной того, что выпадающий список пуст, поскольку он возвращает значение, которое не находится в раскрывающемся списке. –

1

Значение передаваемого в .val потребности быть clientt.Value и не имя текста.

, если вы не имеете clientt.Value, то попробуйте что-то вроде: -

$("#clientNameEdit option[text=" + currentClient + "]").attr("selected", true); 

И довести установку select внутри функции success.

Смежные вопросы