Your presume is correct. In a datagrid constraint '[%CurrentObject%]' always refers to the dataview object where the datagrid is placed in.
Is there also a relation between object C and object A in your metamodel? Or is the description you give of your metamodel the full description? Because if you also draw a relation from C to A you have to set the context to private of het datagrid.
Are you sure that all relation are set? Can you explain what exactly is going wrong in your opinion? And what kind of relations you use (1-0, 0-1, n-0, 0-n, 1-1, n-n)
Can you check in your datagrid what the property is of context action.
If that property is set to 'Reset' non of the context objects will be available, you reset the context which means there are no objects available to use as constraints. Therefore the client wont be able to find any 'CurrentObject'
Can you check if your 'CurrentObject' is not dropped from the context, This has the same effect as context action= 'Reset', the client won't be able to find the 'currentobject' which results in a server exception.