2015-06-03 4 views
0

Мне нужна помощь с этим кодом.KendoUI ComboBox Выбор опции на основе источника данных

Код получит ответ JSON от скрипта PHP и создаст ComboBox на основе его содержимого.

Это работает ... Моя проблема в том, что мне нужно определить параметр, который выбран по умолчанию, в этом случае, поскольку форма является формой редактирования.

Javascript:

dsource = new kendo.data.DataSource({ 
     transport: { 
      read: { 
       url: url, 
       dataType: "json" 
      } 
     }, 
     schema: { 
      model: { 
       fields: { 
        value: {type: "number"}, 
        text: {type: "string"} 
       } 
      } 
     } 
    }); 

    var combobox = $(obj).kendoComboBox({ 
     placeholder: "Selecione", 
     dataTextField: "text", 
     dataValueField: "value", 
     filter: "contains", 
     minLength: 3, 
     dataSource: dsource 
    }); 

JSON, который возвращается из PHP выглядит следующим образом:

[{"value":3,"text":"Blue"},{"value":4,"text":"Red"},{"value":5,"text":"Pink"}] 

Что мне нужно сделать, это выбрать вариант на основе этого JSON, как:

[{"value":3,"text":"Blue", "selected":true},{"value":4,"text":"Red"},{"value":5,"text":"Pink"}] 

В этом случае опция Blue будет выбрана по умолчанию.

Я попытался это всеми средства я могу думать ...

ответ

1

Вы также можете попробовать это ..

//[{"value":3,"text":"Blue", "selected":true},{"value":4,"text":"Red"},{"value":5,"text":"Pink"}] 

function getSelectedTagValue() { 
    var i = null; 
    for (i = 0; dsource.length > i; i += 1) { 
     if (dsource[i].selected == 'true') { 
      return dsource[i].text; 
     } 
    } 
    return null; 
}; 

$("#kendoitems").kendoComboBox({ 
     dataTextField: "text", 
     dataValueField: "value", 
     dataSource: data 
}); 

var combobox = $(obj).kendoComboBox({ 
     placeholder: "Selecione", 
     dataTextField: "text", 
     dataValueField: "value", 
     filter: "contains", 
     minLength: 3, 
     dataSource: dsource 
    }); 

combobox.value(getSelectedTagValue()); 

Надеется, что это помогает,

С уважением,

+0

Спасибо за помощь, но ваш код, как это, это не распространяется работа. Функция getSelectedTagValue() возвращает нулевое значение. Кроме того, почему блок $ («# kendoitems»). KendoComboBox (спасибо вам большое за ваш ответ и время!) Я постараюсь сделать эту работу, и я отправлю ее здесь. – user1281591

1

Колодцем .... Пробовав все возможные пути, мне пришлось изменить всю логику моего кода.

Сначала я использовал ajax для получения данных json ComboBox с php. Сразу после завершения я преобразовал ввод формы в KendoUi ComboBox.

Ну, пусть код говорит само за себя, это работает:

$.ajax({ 
     url: url, 
     dataType: "json", 
     type: "GET" 
    }).done(function (data) { //Replace SUCCESS 

     console.log(obj); 

     selected = null; 

     $.each(data, function (key, value) { 
      console.log(key + ": " + value.text); 
      if(value.selected === "selected"){ 
       window.selected = key; 
      }    
     }); 

     var dataSource = new kendo.data.DataSource({ 
      data: data 
     });   

     var combobox = $(obj).kendoComboBox({ 
      placeholder: "Select", 
      dataTextField: "text", 
      dataValueField: "value", 
      dataSource: data, 
      index: selected 
     }); 

    }).fail(function (data) { //Replace ERROr 

     console.log('Error', data); 

    }); 
Смежные вопросы