cancel
Showing results for 
Search instead for 
Did you mean: 

binding of the odata based bounded sap.m.objectlistItem to another view

former_member127164
Participant
0 Kudos

hi,

i bounded the odata to sap.m.List and now i want to bind the selected list item properties values to another form.how to do this any ideas or examples?

Below i am attaching my sap.m.objectListItem's and form to be bounded.i tried many things but not successful.

Accepted Solutions (1)

Accepted Solutions (1)

former_member127164
Participant
0 Kudos

Finally got the answer

productListTap : function(oEvent) {
    var listdata = oEvent.mParameters.listItem.mProperties;
console.log(listdata);
var intro = listdata.intro;
var number = listdata.number;
var title = listdata.title;
var Array = {};
         Array.intro = intro;
         Array.number = number;
         Array.title = title;
},

thanks for every one who helped me in getting different ideas for solving it.Now i am able to get the selected list item properties into an array.

Answers (5)

Answers (5)

Former Member
0 Kudos

Hi Suneel,

Check this example:-

In Controller.js-

onInit: function() {

  var oData = {

  eventlistp:[

             {

              ADV_CAL_ID : "Test",

              CalPlace : "Conferences",

              DR_NAME : "Test",

              CalPlndDat : "asasas",

              PsrHq : "sasa"

            },

            {

            ADV_CAL_ID : "Test",

              CalPlace : "Conferences",

              DR_NAME : "Test",

              CalPlndDat : "asasas",

              PsrHq : "sasa"

            }

          ]

  };

  var oModel = new sap.ui.model.json.JSONModel();

  oModel.setData(oData);

  this.getView().setModel(oModel,"ReadActivites");

  var oFormModel = new sap.ui.model.json.JSONModel();

  oFormModel.setData(undefined);

  this.getView().setModel(oFormModel,"ReadFormActivites");

  },

productListTap: function(oEvent){

   var bindingcontext = oEvent.getParameters("LISTITEM").listItem.getBindingContextPath("ReadActivites");

   var oData = this.getView().getModel("ReadActivites").getData().eventlistp[bindingcontext.split("/")[2]];

   this.getView().getModel("ReadFormActivites").setData(oData);

  }

In View.js

createContent : function(oController) {

  var oItemtemplate = new sap.m.ObjectListItem("LISTITEM",{

   title:"{ReadActivites>ADV_CAL_ID}",

   text : "{ReadActivites>CalPlace}",

   number :"{ReadActivites>DR_NAME}",

   numberUnit : "{ReadActivites>CalPlndDat}",

   intro : "{ReadActivites>PsrHq}",

   type : sap.m.ListType.Active,

   markFavorite : true,

   markFlagged : true,

  });

  var oList = new sap.m.List({mode:"SingleSelectMaster", id:"listId",

         items:{path:"ReadActivites>/eventlistp", template:oItemtemplate},

         itemPress : function(oEvent){

         oController.productListTap(oEvent);      

         },

  });

  

  var oSimpleForm = sap.ui.layout.form.SimpleForm({

  content: [

            new sap.ui.commons.TextField({placeholder: "ADV_CAL_ID", value: "{ReadFormActivites>/ADV_CAL_ID}"}),

            new sap.ui.commons.TextField({placeholder: "CalPlace", value: "{ReadFormActivites>/CalPlace}"}),

            new sap.ui.commons.TextField({placeholder: "DR_NAME", value: "{ReadFormActivites>/DR_NAME}"}),

            new sap.ui.commons.TextField({placeholder: "CalPlndDat", value: "{ReadFormActivites>/CalPlndDat}"}),

            new sap.ui.commons.TextField({placeholder: "PsrHq", value: "{ReadFormActivites>/PsrHq}"})

  ]

  });

  

  oSimpleForm.setModel(oController.getView().getModel("ReadFormActivites"));

  return new sap.m.Page({

  title: "List Detail Example",

  content: [oList,oSimpleForm]

  });

  }

Regards,

Amit

former_member127164
Participant
0 Kudos

i want syntax for that how to get those properties from mProperties under oEvent

saivellanki
Active Contributor
0 Kudos

Suneel,


Try this -



oEvent.getParameter("listItem").getIntro();

oEvent.getParameter("listItem").getMarkFavorite();

oEvent.getParameter("listItem").getMarkFlagged();

Similarly, for all the paramters that you were passing for object listitem.


Regards,

Sai Vellanki.

Former Member
0 Kudos

console.log(oEvent.mParameters.listItem.mProperties.intro)

But i would not suggest you to take this way to access the property. This is not the right way

Did yu try this.?

productListTap : function(oEvent) {

   var data = {};

  var bindingcontext = oEvent.getParameter("listItem").getBindingContext("ReadActivites");

console.log(bindingcontext)

var path = bindingcontext .getPath()

console.log(path)

}


what error do you get?


If you want any property, it would be as simple as calling getProperty function on bindingcontext

former_member127164
Participant
0 Kudos

Still not solved thi s issue.So now i saw the items in Watch as follows.Now i want to get the mProperties under oEvent.How to get those all properties.Any help please.

Former Member
0 Kudos

When you do console.log(bindingcontext) what are you getting ?


Have a look at this example


JS Bin - Collaborative JavaScript Debugging


Credits to santosh..Found this example from



sorry my bad..it should be


productListTap : function(oEvent) {

   var data = {};

  var bindingcontext = oEvent.getParameter("listItem").getBindingContext("ReadActivites");

var path = bindingcontext .getPath()

console.log(path)

}

Message was edited by: indrajith patel

Private_Member_15166
Active Contributor
0 Kudos

This code might be helpful.

    var oList = this.getView().byId("listId");

var contexts = oTable.getSelectedContexts();

if(contexts.length == 0 ){

alert("Please select a row.");

}else {

var items = contexts.map(function(c) {

return c.getObject();

});

      

       var oId = this.getView().byId("form1InputId");

       oId.setValue(items[0].Field1);

      

       var oId = this.getView().byId("form2InputId "); oId.setValue(items[0].Field2);

      

       var oId = this.getView().byId("form3InputId ");

       oId.setValue(items[0].Field3);

      

       var oId = this.getView().byId("form4InputId ");

       oId.setValue(items[0].Field4);

      

       var oId = this.getView().byId("form5InputId ");

       oId.setValue(items[0].Field5);

      

       var oId = this.getView().byId("form6InputId ");

       oId.setValue(items[0].Field6);

      

    }

santhu_gowdaz
Active Contributor
0 Kudos

var oIntro= evt.getParameter("listItem").mProperties.intro;

var oNumb= evt.getParameter("listItem").mProperties.number;

former_member127164
Participant
0 Kudos

In view.js file

------------------

var oItemtemplate = new sap.m.ObjectListItem("LISTITEM",{

  title:"{ReadActivites>ADV_CAL_ID}",

  text : "{ReadActivites>CalPlace}",

  number :"{ReadActivites>DR_NAME}",

  numberUnit : "{ReadActivites>CalPlndDat}",

  intro : "{ReadActivites>PsrHq}",

  type : sap.m.ListType.Active,

  markFavorite : true,

  markFlagged : true,

  });

    

     var oList = new sap.m.List({mode:"SingleSelectMaster", id:"listId",

        items:{path:"ReadActivites>/eventlistp", template:oItemtemplate},

        itemPress : function(oEvent){

        oController.productListTap(oEvent);       },

       });

in controller.js

--------------------

productListTap : function(oEvent) {

   var data = {};

  data.context = oEvent.getSource().getBindingContext("ReadActivites");

  var selectedIndex = data.context.sPath.split("/")[2];

  console.log(data.context);

But it is giving sPath is not a valid property like that.

kedarT
Active Contributor
0 Kudos

data.context = oEvent.getSource().getBindingContext();

prop1 =  data.context.getProperty("ADV_CAL_ID");

Hope this helps.

saivellanki
Active Contributor
0 Kudos

Hi Suneel,

Use selectionChange event of sap.m.List and try this -


oEvent.getSource().getBinding("items").getContexts()[oEvent.getSource().indexOfItem(oEvent.getParameter("listItem"))].sPath

Check the working sample - JS Bin - Collaborative JavaScript Debugging


Regards,

Sai Vellanki.

Former Member
0 Kudos

In controller.js

productListTap : function(oEvent) {

   var data = {};

  var bindingcontext = oEvent.getParameter("listItem").getBindingContext();

var path = bindingcontext .getPath()

console.log(path)

}

kedarT
Active Contributor
0 Kudos

Hi Suneel,

Please provide your code which you have tried.