Thats because Construct 2 "runs" in the direction x -> some y -> even more z
sorting by x will move x, y and z (because it checks for array.at(index) when sorting)
sorting by y will move y and z and leave x in place
sorting by z will move z and leave x and y at place
so to do what you want, use x as your page index and y and z as your 2 dimensional data table. (you can create a new array and fill it with for each xyz oldarray: set newarray at(oldarray.curz,oldarray.curx,pldarray.cury) to oldarray.curvalue