简体   繁体   中英

Ms Dynamics CRM custom workflow get visible attributes from form using c#

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

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 ie 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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM