Search code examples
dynamics-crm-onlinedynamics-365

RESCO : Set Look Up view dynamically on a lookup field on change of a field on the form using JSBridge


I am trying to set a view for a lookup field in Resco using JSBridge But the code does not work. Can you please point out where i am going wrong.

Below is my code --

onLoad: function () {

 MobileCRM.UI.EntityForm.requestObject(function (entityForm) {


 var detailView = entityForm.getDetailView("Booking");
 var customXMLView = '<fetch version="1.0"><entity name="msdyn_workordersubstatus">' +
 '<filter type="and"><condition attribute="msdyn_workordersubstatusid" operator="eq" value="{90F7A06F-CA1C-EA11-A811-000D3A6AACAF}"/></filter></entity></fetch>';


inlineSetup = new MobileCRM.UI.DetailViewItems.LookupSetup();
inlineSetup.addFilter("msdyn_workordersubstatus", customXMLView);
var dialogSetup = new MobileCRM.UI.DetailViewItems.LookupSetup();
dialogSetup.addView("msdyn_workordersubstatus", "WorkOrderSubStatusList", true);
var dialogOnly = false; // Allow both inline lookup and expanded lookup dialog
detailView.updateLinkItemViews(0, dialogSetup, inlineSetup, dialogOnly);

}); 

}

Not sure what is the first parameter in the below code -

detailView.updateLinkItemViews(0, dialogSetup, inlineSetup, dialogOnly);

Also tried LookupForm, the code works but not sure how to bind this to the field-

ShowLookUp: function () {

var lookupForm = new MobileCRM.UI.LookupForm();
var customXMLView = '<fetch version="1.0"><entity name="msdyn_workordersubstatus">' +
'<filter type="and"><condition attribute="msdyn_workordersubstatusid" operator="eq" value="{90F7A06F- 
CA1C-EA11-A811-000D3A6AACAF}"/></filter></entity></fetch>';
lookupForm.addEntityFilter("msdyn_workordersubstatus", customXMLView)
lookupForm.addView("msdyn_workordersubstatus", "WorkOrderSubStatusList", "true");
lookupForm.allowNull = true;
lookupForm.show(FS.BRB.onLookupFinished, MobileCRM.bridge.alert, null);

},

onLookupFinished: function () {

MobileCRM.UI.EntityForm.requestObject(
function (entityForm) {

},
MobileCRM.bridge.alert
);

}

Any suggestions would be appreciated.

Thanks in Advance


Solution

  • So i found the answer to my above query. Below is the working code to set lookup view dynamically in resco.

    Posting it so that it helps others.

    onLoad: function () {
    
     MobileCRM.UI.EntityForm.requestObject(function (entityForm) {
    
    
     var detailView = entityForm.getDetailView("Booking");
    
     var itemIndex = detailView.getItemIndex("vWO.msdyn_substatus"); //Not required, Used this to get the index of my lookup control on the form
    
    
     var customXMLView = '<fetch version="1.0"><entity name="msdyn_workordersubstatus">' +
     '<filter type="and"><condition attribute="msdyn_workordersubstatusid" operator="eq" 
     value="{90F7A06F-CA1C-EA11-A811-000D3A6AACAF}"/></filter></entity></fetch>';
    
     /// Create inline lookup setup (This shows when you click inside lookup without opening the dialog)
    inlineSetup = new MobileCRM.UI.DetailViewItems.LookupSetup();
    inlineSetup.addFilter("msdyn_workordersubstatus", customXMLView);
    
    //Dialog Look Up (This shows when we click on the plus button)
     var dialogSetup = new MobileCRM.UI.DetailViewItems.LookupSetup();
    dialogSetup.addView("msdyn_workordersubstatus", "WorkOrderSubStatusList", true);
    
    
    var dialogOnly = false; // Allow both inline lookup and expanded lookup dialog
    
    
     detailView.updateLinkItemViews(11, dialogSetup, inlineSetup, dialogOnly); //here the 
     first parameter is the index of the  lookup field
    
    
     });
    },
    

    Mistake i did was, i did not write the correct index number of the control in line

    detailView.updateLinkItemViews(0, dialogSetup, inlineSetup, dialogOnly);
    

    Correction :

    detailView.updateLinkItemViews(11, dialogSetup, inlineSetup, dialogOnly);