When I am executing several commands (resize rows, hide columns) with a CGXODBCGrid and sandwich them in BeginTrans and CommitTrans calls I still have to undo each command. Why does BeginTrans/CommitTrans not work with ODBCGrid (and DAOGrid too)?

Transactions are turned off by default for odbc grids because in most cases when BeginTrans is called with an ODBC grid (e.g. when you do Find/Replace or other operations), the operation cannot be undone in the grid. Therefore the ODBC grid implementation of BeginTrans simply calls pDatabase->BeginTrans().

However, in the specific situation you are mentioning here, if you need to batch two commands together and you know that know database operation is involved, you can call CGXGridCore::BeginTrans and CGXGridCore::CommitTrans instead.