Как я могу установить выбранные элементы в sapui5 MultiComboBox? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть следующие данные json:

{  
   "medios":[  
      {  
         "Medio":"Cheque",
         "Key":"5"
      },
      {  
         "Medio":"Transferencia Bancaria",
         "Key":"6"
      }
   ]
}

И я связываю эти данные, используя модель json:

var oModelTest = new sap.ui.model.json.JSONModel();
var MediosPagoPromesa = [];
var MedioObj = {  
Medio: proMedioPagoCP, //a variable I fill inside a loop
Key: i.toString() //because it is inside a loop
}

MediosPagoPromesa.push(MedioObj);

 oModelTest.setData({
 'medios': MediosPagoPromesa
 });
sap.ui.getCore().setModel(oModelTest, "Pagos"); 

в MultiComboBox:

 var test = sap.ui.getCore().getModel("Pagos"); 

 var oMultiSelect = new sap.m.MultiComboBox({
      items: {
      path: "/medios",
      template: new sap.ui.core.ListItem({
      key: '{Key}',
      text: '{Medio}'
  }),
      templateShareable: true
      },
      selectedKeys: ?,      //here is my problem             
});
oMultiSelect.setModel(test);

Чего я не знаю, так это как установить выбранные элементы, все элементы, которые я связываю, в MultiComboBox, чтобы они могли автоматически отображаться как выбранные даже с первого раза, есть идеи, как мне этого добиться?

1 Ответ

0 голосов
/ 12 декабря 2018

добавить новый массив выбранного элемента, хранящийся в цикле

var oModelTest = new sap.ui.model.json.JSONModel();
var MediosPagoPromesa = [];
var selected = [];
var MedioObj = {  
Medio: proMedioPagoCP, //I variable I fill inside a loop
Key: i.toString() //because it is inside a loop
}
selected.push(i.toString); //inside the loop

MediosPagoPromesa.push(MedioObj);

 oModelTest.setData({
 'medios': MediosPagoPromesa,
 'selected' : selected 
 });
sap.ui.getCore().setModel(oModelTest, "Pagos");

В MultiComBox используйте bindProperty для привязки свойства selectedKeys

var test = sap.ui.getCore().getModel("Pagos"); 

 var oMultiSelect = new sap.m.MultiComboBox({
      items: {
      path: "/medios",
      template: new sap.ui.core.ListItem({
      key: '{Key}',
      text: '{Medio}'
  }),
      templateShareable: true
      },

});
oMultiSelect.bindProperty("selectedKeys", "/selected");
oMultiSelect.setModel(test);

Вот пример jsbin с понятным примером:https://jsbin.com/murural/1/edit?html,js,output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...