So, in the end I couldn't solve this in an elegant way, but I implemented a temporary solution that may help someone else, in the future.
So, I simply attached a Custom Handler to the ChangeOrder event, inside which I check for the tables I want to prevent staging synchronization during change order of elements, and simply turn off the logging for the request.
It'll still log Create, Update, Delete events in table, so it'll not affect functioality too much.
Downsize is that, to appluy the sorting of elements to the next enviroment through Staging, once you finish to sort the elements you need to manually synch the entire Custom Table object.
This takes just a couple of seconds, even for 500 rows, so it's not a huge issue for me.
Next step will be creating a custom layout for those tables, and adding a "Synch entire table" button at the top ;) Hope this'll help anyone trying to address the same issue.
using CMS.Base;
using CMS.CustomTables;
using CMS.DataEngine;
using CMS.DocumentEngine;
using CMS.EventLog;
using CMS;
[assembly: RegisterModule(typeof(CustomHandlerModule))]
public class CustomHandlerModule : Module
{
public CustomHandlerModule() : base("CustomHandlerModule") { }
protected override void OnInit()
{
base.OnInit();
EventLogProvider.LogInformation("Manage_ChangeOrder", "INFORMATION", "Custom Handler begin Init");
ObjectEvents.ChangeOrder.Before += Manage_ChangeOrder;
}
private void Manage_ChangeOrder(object sender, ObjectChangeOrderEventArgs e)
{
string tablename = e.Object.TypeInfo.ObjectType.ToLower();
EventLogProvider.LogInformation("Manage_ChangeOrder", "INFORMATION", string.Format("Tablename {0}",tablename ));
switch(tablename)
{
/*Use [namespace].[classname] from your custom table*/
case "customtableitem.[namespace].[classname]": e.Using(new CMSActionContext(){LogSynchronization = false});break;
/*other cases for other tables to manage, here*/
default: break;
}
}
}