I am attempting to use the ribbon workbench and create a new "New" button and all is going fine except the JS.
So I am attempting to set several Lookup fields and cannot get it to work properly. If I do a single lookup it populates perfectly fine, I have tested with multiple fields but only one will fill in.
function newService_Button(){ var parameters = {}; parameters["formid"] = "GUID NUMBER GOES HERE"; if(Xrm.Page.getAttribute("cyb_poc") != null){ parameters["cyb_poc"] = Xrm.Page.getAttribute("cyb_poc").getValue()[0].id.slice(1,-1); parameters["cyb_pocname"] = Xrm.Page.getAttribute("cyb_poc").getValue()[0].name; parameters["cyb_poctype"] = "contact"; }; if(Xrm.Page.getAttribute("cyb_member") != null){ parameters["cyb_member"] = Xrm.Page.getAttribute("cyb_member").getValue()[0].id.slice(1,-1); parameters["cyb_membername"] = Xrm.Page.getAttribute("cyb_member").getValue()[0].name; parameters["cyb_membernametype"] = "cyb_member"; }; if(Xrm.Page.getAttribute("cyb_loa") != null){ parameters["cyb_loa"] = Xrm.Page.getAttribute("cyb_loa").getValue()[0].id.slice(1,-1); parameters["cyb_loaname"] = Xrm.Page.getAttribute("cyb_loa").getValue()[0].name; parameters["cyb_loatype"] = "cyb_loa"; }; Xrm.Utility.openEntityForm("cyb_service", null, parameters); }
All the code works and pulls the information, but doesn't populate on the new form, just one of the lookup fields.
I was not aware of the ability to mapping fields, this helps so much, thank you!!! :D
You have a new follower on your sites. :P
I believe there is no need to create any buttons. Just use the fields mapping and it'll do the job for you - www.marksgroup.net/.../
Sure, I have a Service (cyb_service) entity/form that has lookup fields to contact, cyb_loa, and cyb_member.
I am attempting to use the Ribbon Workbench to create a new "New" button for the sub-grid's, basically hide the current New and add my own custom one.
As the new button will be on sub-grid's on each of the contact, cyb_loa, and and cyb_member forms not all of the information/fields will be shown/available on those forms.
Example: There is an lookup field POC (contact) on the Member form but not on the LOA (cyb_loa) form.
Hence the Xrm.Page.getAttribute("field") != null
scenarios, so if it cant find it currently on the form do not attempt to add it to the parameters.
Ok. Then I'm a bit lost.
Can we put the code aside and talk about your scenario and not the implementation?
a33ik Thank you for the reply, but that is one of the try's I had tried in the past, but I did attempt to use it again just in case I had something different.
Couple of things though, I have to have it as the Xrm.Page.getAttribute("cyb_poc")
vs Xrm.Page.getAttribute("cyb_poc").getValue()
due to the fact that that I am applying it to the sub-grid which is on different entities meaning that all those fields will be available to pass in as parameters. So if I call it the way I have it will return null if the field doesn't even exist on the form but return something if it is.
Also, I did attempt p["cyb_poctype"] = Xrm.Page.getAttribute("cyb_poc").getValue()[0].entityType;
for the type with no luck as what I had in there returns the same.
Using either my code or the one you supplied it only populates the POC (contact) field, but if I remove that from the code it will populate the Member (cyb_member) field.
For the lulz I even tried using how new records are made with the p["cyb_POC@odata.bind"] = "/contacts("+Xrm.Page.getAttribute("cyb_poc").getValue()[0].id.slice(1,-1)+")";
and that did not work either.
I am definitely open to any other suggestions.
Hello,
Try the following instead:
function newService_Button(){ var parameters = {}; parameters["formid"] = "GUID NUMBER GOES HERE"; if(Xrm.Page.getAttribute("cyb_poc").getValue() != null){ parameters["cyb_poc"] = Xrm.Page.getAttribute("cyb_poc").getValue()[0].id.slice(1,-1); parameters["cyb_pocname"] = Xrm.Page.getAttribute("cyb_poc").getValue()[0].name; } if(Xrm.Page.getAttribute("cyb_member").getValue() != null){ parameters["cyb_member"] = Xrm.Page.getAttribute("cyb_member").getValue()[0].id.slice(1,-1); parameters["cyb_membername"] = Xrm.Page.getAttribute("cyb_member").getValue()[0].name; } if(Xrm.Page.getAttribute("cyb_loa").getValue() != null){ parameters["cyb_loa"] = Xrm.Page.getAttribute("cyb_loa").getValue()[0].id.slice(1,-1); parameters["cyb_loaname"] = Xrm.Page.getAttribute("cyb_loa").getValue()[0].name; } Xrm.Utility.openEntityForm("cyb_service", null, parameters); }
You can find explanation why here - learn.microsoft.com/.../set-field-values-using-parameters-passed-form
Stay up to date on forum activity by subscribing. You can also customize your in-app and email Notification settings across all subscriptions.
André Arnaud de Cal... 291,228 Super User 2024 Season 2
Martin Dráb 230,056 Most Valuable Professional
nmaenpaa 101,156