Hi @chens
To check row and col before the cell is changed you can use beforeChange callback. Here’s the example http://jsfiddle.net/handsoncode/w8en5mck/1/
It returns an array of changes[row, col, previous_value, new_value]
When it comes to moving columns there is a afterColumnMove callback that return a start and end column. Here’s a demo: http://jsfiddle.net/o9hnrqd9/ you can also use getData() to track chages or create a custom renderer to add id.