Hello, I'm working on a customization where all attribute editing is done through custom forms. I managed to setup a basic implementation of a workflow that opens a ProWindow to collect and validate all the attributes of a newly created feature that works well, which I'll extend to work with editing attributes of existing features. Now I need to find the right way to prevent users to edit data on the standard controls (e.g. attribute table; attributes pane).
What I'd like to accomplish is to be sure that the only way users have to edit data is through the custom controls we provide. As for my understanding (I'm new to Pro SDK development), there are several ways to accomplish this; I've came across and thought about a few ideas on the subject, like:
- Hide and disable standard controls: this would lead to provide custom functionalities to replace them though, unless there is an easy way to just make them read-only
- Turn off Editing and turn it on programmatically only when our custom workflow needs it (preventing it to be enabled by the user): this would need us to carefully manage start/stop editing sessions across the whole application
- Let the user interact with standard controls and use OnRowChanged event (and/or other events) to validate data and act accordingly: this would mean that the event workflow can potentially grow a lot and become hard to maintain
I'm sure there are also other ways that I didn't think about. I mentioned the main pros and cons that came to my mind for each approach, but I'm aware they can be more. What I need to understand is which approach is the best choice, but so far I lack the experience to make an educated guess about it.
Is there any best practice around this subject that I can follow? If the approaches I mentioned are viable, which one of them is the most affordable, clean and correct? Is there any other way that I didn't think of?
Thanks in advance to anyone who will share their thought.