2017-01-23 6 views
0

Я хочу установить значения в Combobox в таблице: он не показывает мне значения? Вот код: Вид:Combobox in sap.ui.table.Table

<Column width="10rem"> 
    <m:Label text="{i18n>Status}" /> 
    <template> 
     <m:ComboBox items="{items>/Status}" 
       templateShareable="true"> 
      <m:items> 
       <core:Item text="{Name}" /> 
      </m:items> 
     </m:ComboBox> 
    </template> 
</Column> 

Контроллер: Это parameterset.

success : function(oData, oResponse) { 
         // create JSON model 
         var oODataJSONModel = new sap.ui.model.json.JSONModel(); 
         var child1 = []; 
         child1.push({Name:"S"}); 
         child1.push({Name:"E"}); 
         oData.Status = child1; 
         oODataJSONModel.setData(oData); 
         oView.setModel(oODataJSONModel, "items"); 

Спасибо за помощь!

ответ

1

Вам не хватает псевдонима для привязки к объекту Item.

<core:Item text="{items>Name}" /> 
+0

Спасибо, теперь в консоли появляется следующая ошибка: 'Во время операции клонирования был найден шаблон, который не был отмечен как« templateShareable: true »и« templateShareable: false ». Знаете ли вы, что не так? – Mario

+0

Другой вопрос: когда я хочу получить строку с помощью this.getView(). GetModel («items»). GetProperty ( oTable.getContextByIndex (aSelectedItems [0]). SPath) .Status'; Но он просто показывает «ложь», а не «Е». Зачем ? – Mario

+0

это о утечке памяти - подробности здесь: https://www.nabisoft.com/tutorials/sapui5/understanding-templateShareable-in-sapui5 –

0

Если вы хотите прочитать значение выпадающего списка при его изменении, вы можете сделать следующее. Сначала в XML, установите свойство selectionChange="nameOfYourFunction" в элементе combobox. Всякий раз, когда пользователь нажимает на другой элемент, выполняется nameOfYourFunction(). Здесь в этой функции вы можете проверить значение.

nameOfYourFunction : function(){ 
    //Do whatever you want to do here when user changes value of combo 
    this.getView().byId("combobox_id_here").getValue(); // returns text inside combobox 
} 

Вы, возможно, придется поэкспериментировать с функцией и видеть, когда точно она вызывается. Я немного поработал с ним, и иногда его дважды называют. Я думаю, что однажды, когда текст Combobox является значением в списке, а затем он снова вызывается, когда вы покидаете фокус в поле со списком. Получение вызова дважды, вероятно, не повлияет на ваш код, но зависит от того, что вы делаете в своей функции.