2016-05-20 2 views
0

На моей странице ASPX у меня есть следующий ComboBox, который должен быть заполнен из Ajax WebMethod.Чтобы заполнить ComboBox (ajaxToolkit) из Ajax WebMethod

<ajaxToolkit:ComboBox ID ="cbMembers" runat="server"></ajaxToolkit:ComboBox> 

WebMethod, который заполняет ComboBox вызывается следующим образом:

$.ajax({ 
     type: "POST", 
     url: functions.aspx/members", 
     data: "{SearchInput: '" + SearchInput + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (r) {     
      var cbMembers = $("[id*=cbMembers]"); 
      $.each(r.d, function() { 
       cbMembers.append(-- My problem is here --); 
      })     
     } 
    }); 

WebMethod

List<ListItem> members = new List<ListItem>(); 
... 
if (Reader.HasRows) 
      { 
       while (Reader.Read()) 
       { 
        members.Add(new ListItem 
        { 
         Value = HttpUtility.HtmlEncode((string)(Reader["name"])), 
         Text = HttpUtility.HtmlEncode((string)(Reader["name"])) 
        }); 
       } 
      } 
      return members; 
... 

Данные правильно извлекаются из WebMethod. Я протестировал его. Но моя проблема состоит в том, чтобы заполнить элементы списка в ComboBox. Любой совет?

success: function (r) {     
      var cbMembers = $("[id*=cbMembers]"); 
      $.each(r.d, function() { 
       cbMembers.append(-- How to append the data here? --); 
      }) 

     } 
+1

Я не считаю, что это легко сделать с чистым JavaScript. Проблема в том, что combobox не отображает как простой выбор, а как div, поэтому большая часть инициализации выполняется ASP.NET, и вам нужно реплицировать это. Я бы предложил рассмотреть вариант с несколькими вариантами выбора, с которыми легко справиться в JS, или UpdatePanel – Andrei

+0

Возможно, вы правы. Я пробовал много способов, но никто, кажется, неправильно заполняет ComboBox. – Gloria

ответ

0

Попробуйте

$.each(r.d, function() { 
cbMembers.append($("<option>",{value:"1",text:"Gloria"})); 
}) 
+0

Он не отображается правильно, как ComboBox. – Gloria

+0

Правильный способ заполнения ComboBox заключается в использовании , а не

+0

Если вы видите, что html '' также отображается как 'option' – Mairaj

0

Попробуйте

 $.each(r.d, function() { 
      cbMembers.append($("<option></option>").val(this['Value']).html(this['Text'])); 
     } 
+1

Пожалуйста, объясните, как ваш ответ решает проблему - спасибо. –

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