2014-06-12 3 views
1

Я связал ODataModel со столом. В таблице один из столбцов - выпадающий список. Список имеет около 3 значений. Это немного запутанно для меня, но как идти с таким сценарием? Должен ли я связать другую модель, состоящую из значений, которые я хочу в раскрывающемся списке, а затем привязать ее к ответу, исходящему из ODataModel, привязанного к таблице?Заполнение Combobox в таблице Столбец

Правильно ли следующее: но это может быть не очень хорошо, если у меня есть больше значений в раскрывающемся списке и более ... как действовать, если я хочу связать этот «ключ», упомянутый ниже, с «статусом» в ODataModel? Здесь я привязал свойство value к combobox к «StatusText», исходящему из ODataModel. Но я хочу, чтобы связать свойство «ключ» ListItem с «Статус» от ODataModel (который привязан с таблицей) ответа

oTable.addColumn(
    new sap.ui.commons.ComboBox({ 
    items: [ 
           new sap.ui.core.ListItem({text: "New",key:"1"}).bindProperty("text","StatusText").bindProperty("key","Status"), 
           new sap.ui.core.ListItem({text: "In Process",key:"2"}), 
           new sap.ui.core.ListItem({text: "Completed",key:"3"}) 
           ] 
          }).bindProperty("value","StatusText") 
); 

Любая помощь будет оценена.

Благодаря

+0

Надеюсь, у меня есть ваша точка зрения, но я думаю, что обязательная тема для меня не ясна :-) – zyrex

ответ

0

Это работает в таблице, но я думаю, что ваш выпадающий все еще имеет некоторые ошибки с креплениями.

var oCombobox = new sap.ui.commons.ComboBox({ 
     items: [ 
       new sap.ui.core.ListItem({text: "New",key:"1"}).bindProperty("text","StatusText").bindProperty("key","Status"), 
       new sap.ui.core.ListItem({text: "In Process",key:"2"}), 
       new sap.ui.core.ListItem({text: "Completed",key:"3"}) 
       ] 
      }).bindProperty("value","StatusText"); 

oTable.addColumn(new sap.ui.table.Column({ 
    template : oCombobox, 
    visible : true, 
})); 

Допустим, у вас есть поле oData, называемое {Firstname}, определенное в вашем типе результата (таблица), например. для этой таблицы, то вы связываете его в таблице как:

oTable.addColumn(new sap.ui.table.Column({ 
    template : new sap.ui.commons.TextView({ 
     text : "{Firstname}", 
     textAlign : sap.ui.core.TextAlign.Center 
    }), 
    visible : true, 
})); 

Насколько я понимаю, вы хотите, чтобы получить возможные значения из вашего OData службы, но я думаю, что это не возможно в случае dropdown/combobox, потому что вы получаете таблицу из вашего сервера, каждая строка имеет значение в одном поле -> как ваши привязки 3 значения в одном поле таблицы?

я понял, выпадающие в собственной службе, называя выпадающие значения из бэкэнда отдельно:

getDropdown : function() { 

// Create JSON data model 
var oModel = new sap.ui.model.json.JSONModel(); 
oModel.loadData("/sap/opu/odata/sap/YOUR_SERVICE/YourEntitySet"); 
sap.ui.getCore().setModel(oModel); 

// Create a DropdownBox 
var oDropdown = new sap.ui.commons.DropdownBox("DropdownBox", { 
         text: "{Firstname}", 
        }); 

oDropdown.setModel(oModel); 

var oItemTemplate1 = new sap.ui.core.ListItem({ 
         text : "{Firstname}", 
        }); 

oDropdown.bindItems("/d/results", oItemTemplate1); 
// "/d/results" may vary depending on your path 

// return the box 
return oDropdown; 

}, 

вы можете использовать возвращающийся результат в таблице.

например. в поле зрения:

var dropdown = oController.getDropdown(); 
dropdown.placeAt("content"); 
Смежные вопросы