August 11, 2018

Display a Two Options field as checkbox inside a Quick View Form

The other day I was working on a project involving a Quick View Form, nothing complicated but in the end it required some additional steps to achieve the desired result.
The purpose of this Quick View Form (for the Account entity) was to show a single Two Options field, so the users don't need to open the related account record to see the value of this boolean field.
As usual I created the Quick View Form, added the Two Options Field, save & publish, added the Quick View Form inside the other entity, save & publish. All was working except the Two Options Field was displaying as a label showing Yes or No:

As I need to show this field as a checkbox, first thing I thought was: "no big deal, I back to the form editor and I change the formatting to show a checkbox", the only problem is that the "Formatting" tab inside the field properties is missing when you work with a Quick View Form:

So it is not possible to set the Control Formatting style to display the field as a checkbox, as you can do inside a standard or a Quick Create Form:

A workaround is to manually edit the solution XML and change the classid attribute of the control to a specific value.

Beware: you should do this kind of editing only if you know what you are doing, I don't encourage to go and edit files without having a proper knowledge of the XML structure.

First step I did is to create a new solution containing just the Quick View Form I needed to edit, this is possible with the "Select Entity Assets" wizard of the latest versions of Dynamics, if you are on an older version you need to add the entire entity (with all the forms, views and fields) to the new solution.

After I exported the solution as Unmanaged, I extracted the zip file to a folder and I edited the file customizations.xml. In order to find the right place to edit I searched for the logical name of the field (in my case marketingonly) and I was in front of the definition:
<cell id="{32660749-eb65-6c8d-208c-664929db91db}" showlabel="true" locklevel="0">
    <label description="Marketing Only" languagecode="1033" />
  <control id="marketingonly" classid="{67FAC785-CD58-4F9F-ABB3-4B7DDC6ED5ED}" datafieldname="marketingonly" disabled="false" uniqueid="{b751c953-ac42-7723-a3c5-d4c7b0514c0b}" />
As I mentioned before the attribute to update is classid, so I changed the guid value to {B0C6723A-8503-4FD7-BB28-C8A06AC933C2}, if someone is curious where this specific value comes from, it is listed inside the FormXml definition as the value for CheckBoxControl, or you can export another form with a checkbox and you will find the same guid value.

Done with the edit I saved the file, zipped the solution files, imported and published, and finally the Quick View Form now shows a checkbox:

Hope it helps!


Post a Comment