Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I'm looking at these specific interfaces ITableWrite and IFeatureClassWrite.

I have a need to store some features (mostly a custom log) and I can't having them triggering my editor events (OnCreate, OnChange and OnDelete - but more specifically OnCreate).

The document is clear that IFeatureClassWrite will NOT trigger these events (IRow.Store).

ITableWrite just says:

" .WriteRow | Write a row to the database without polymorphic object update behavior. "

Do they mean the same thing? e.g. using WriteRow or WriteRows will not trigger the OnStore event (which BTW is not listed on IRowEvents) and using IFeatureClassWrite will not trigger OnStore events?

Another question: do I need to bypass these events? I'm only listening to OnCreate, OnChange and OnDelete events of the editor.

Also, is that the best tatic to capture these specific events? I'm afraid that programmatically, someone else might use IWorkspaceEdit, and my editor event handler won't listen to those (events).

Sorry for the long question, but the setup to test this is kinda of big, and I'm open to advice. Thanks!

share|improve this question
add comment

1 Answer 1

up vote 3 down vote accepted

First, editor events will only be triggered when editing in ArcMap. If you ever need to do edits on the server, or from a standalone application (IWorkspaceEdit), these events will not be triggered. The recommended alternative is to use class extensions, which guarantee your custom behavior to be executed in every of these environments.

Second, using ITableWrite is not generally recommended as it completely bypasses any custom behavior, including that of some built-in feature kinds. For instance, if a feature class is part of a geometric network, writing data using ITableWrite will result in the logical network not to be in sync, thus corrupting the data. Similarly for annotation features.

If you want to temporarily bypass any code running on editor events, your best bet would be to store a flag somewhere (e.g. in an application extension) and set it accordingly. If you choose to hook to events using class extensions instead of the editor, the most appropriate place to store such a flag would probably be a workspace extension.

share|improve this answer
    
Got it. My issue here is that I need to capture BOTH events then. Some for programatic editing and some for user editing inside ArcMap. I'll probably create a handler class and listen to both events, which directs the events to that class. –  George Mar 17 '11 at 12:28
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.