0

How to get visible attributes from entity form using c# in custom workflow? Any idea please share!

2 Answers2

3

It's a PITA but it's doable.

  1. retrieve the form you want to process from the systemform entity (you want the formxml attribute)
  2. the formxml attribute contains the form definition, it's encoded (< is written as &lt; and so on) xml format.

Inside the formxml contents, a field looks like this:

    <cell id="(guid)" labelid="(guid)" showlabel="true" locklevel="0" visible="false">
    <labels>
        <label description="(field label)" languagecode="1033" />
    </labels>
    <control id="(field name)" classid="(guid)" datafieldname="(field name)" disabled="false">
  1. parse the xml, looking for cell elements which do not have visible attribute (it's only there if the field is hidden)
  2. you might have to narrow the list down through further searches in xml (not 100% positive about what i.e. a subgrid would look like) but I have no direct experience with this kind of logic so I can't pinpoint each and every corner case

Pain point: You won't be able to tell if a field visibility has been toggled through javascript

Alex
  • 23,004
  • 4
  • 39
  • 73
  • Of course, processes should *never* assume data is coming in from a form (what if an external application creates/updates a record ? imports ? other workflows manipulating data ? plugins ? external applications ? ) so YMMV – Alex Sep 15 '15 at 08:42
0

What do you mean visible attributes? You mean attributes with a value or attributes showed in the form? If it's the second the only way that you have to keep track of that is use a text field and use some code to identify what is active.

ex. create a text field

and write in it all the fields that are visible ex name and surname:

"name","surname"

You can manipulate this with javascript and business rules to keep the list of fields updated at every time for each record. In the code behind you just need to read for the text field and manipulate the magic string. It's not a really nice operation, but is the only way i can see to keep track of what fields are shown on the form.

Mauro De Biasio
  • 1,146
  • 6
  • 16