Динамически привязать таблицу из контроллера в SAPUI5

Я создал таблицу в представлении xml, я хотел бы связать таблицу в контроллере, чтобы ее можно было динамически изменять в зависимости от того, кто загружает приложение.

XML-ПРОСМОТР

<Table inset="false"
            id="pTable">    
            <columns>
                <Column id="year" width="auto">
                    <Text text="Year" />
                </Column>
                <Column id="rating" width="auto">
                    <Text text="Performance Rating"/>
                </Column>
                <Column id="respect" width="auto">
                    <Text text="Managing with Respect" />
                </Column>
            </columns>
            <items>
                <ColumnListItem>
                    <cells>
                        <Text id="tYear" text="{Begda}" />
                        <Text id="tRating" text="{Rating}" />
                        <Text id="tRespect" text="{MwrRating}" />                        
                    </cells>
                </ColumnListItem>
             </items>
            </Table>     

JS-контроллер

var pHistory = this.byId("pTable");
var phURL = "/PMRPerformanceSet/?$filter=IvGuid eq '5438A43913276540E1008000A7E414BA'"
pHistory.setModel(oModel);
pHistory.bindRows(phURL);

Вроде бы контроллер должен выглядеть примерно так, однако это не работает

Какие-либо предложения?


person rustycode    schedule 25.11.2014    source источник


Ответы (4)


Я думаю, вы используете sap.m.Table:

<Table id="pTable" 
    inset="false" 
    items="{/PMRPerformanceSet}">  // add items Here for your oData  collection   
    <columns>
        <Column id="year" width="auto">
            <Text text="Year" />
         </Column>
         <Column id="rating" width="auto">
             <Text text="Performance Rating"/>
         </Column>
         <Column id="respect" width="auto">
             <Text text="Managing with Respect" />
         </Column>
     </columns>
     <items>
         <ColumnListItem>
             <cells>
                 <Text id="tYear" text="{Begda}" />
                 <Text id="tRating" text="{Rating}" />
                 <Text id="tRespect" text="{MwrRating}" />                        
             </cells>
         </ColumnListItem>
     </items>
</Table>

Затем установите модель в контроллере. проверьте ответ службы odata на вкладке «Сеть» инструмента разработчика, затем привяжите элементы в соответствии с этим в представлении XML.

person Abul    schedule 27.11.2014

Я думаю, это должно больше выглядеть так:

var oTable = this.getView().byId("pTable");
var phURL = "/PMRPerformanceSet/?$filter=IvGuid eq '5438A43913276540E1008000A7E414BA'"
var oModel = new sap.ui.model.odata.ODataModel(baseUrl + phURL);

oTable.setModel(oModel);
oTable.bindRows("/YourBindingRootPath");

См. пример в документации.

person cschuff    schedule 27.11.2014

Пожалуйста, попробуйте это в контроллере

   var oModel = new sap.ui.model.odata.ODataModel("proxy/http/seasrv05.applexus.com:8000/sap/opu/odata/sap/ZGET_MATERIALS",
              true, 'appdevelop', 'develop01');

    oModel.read("/zget_materialsCollection",null,["$filter=i_search eq 'R1' and i_werks eq '1000'"],true,
            function(data, response) 
        {
        var value=[];
        value = data.results;
        console.log(value);
        console.log(oModel);
        //sap.ui.getCore().getModel("getMaterialModel").fireRequestCompleted();
        var oModel1 = new sap.ui.model.json.JSONModel();
        oModel1.setData({ materials: value});
        oModel1.setSizeLimit(300);
        var oTable = sap.ui.getCore().byId("table");
        oTable.setModel(oModel1);
        oTable.bindRows("/materials");      
        },
        function()
        {
            jQuery.sap.require("sap.m.MessageToast");
            sap.m.MessageToast.show("No record fetched",{my : "center center",at : "center center"});
        }); 
person Rosemol Francis    schedule 23.02.2015
comment
Это решение, которое я в итоге использовал, [code]var pHistory = this.byId(pTable); pHistory.setModel(jModel); pHistory.bindAggregation(items, /ratings/results, new sap.m.ColumnListItem({cells:[ new sap.m.Label({ text:{Begda} }), new sap.m.Text({ text:{Rating } }), новый sap.m.Text({ text:{MwrRating} }) ] })); [/код] - person rustycode; 23.02.2015

Вот решение, которое я в итоге использовал, оно берет таблицу с идентификатором «pTable» из представления xml и связывает ее с моей моделью JSON jModel.

var pHistory = this.byId("pTable");
    pHistory.setModel(jModel);
    pHistory.bindAggregation("items", "/ratings/results", new sap.m.ColumnListItem({
        cells:[
               new sap.m.Label({
                   text:"{Begda}"
               }),
               new sap.m.Text({
                   text:"{Rating}"
               }),
               new sap.m.Text({
                   text:"{MwrRating}"
               })
               ]
    }));
person rustycode    schedule 23.02.2015