It indeed ignores the sorter on the datasource, when a sort is specified by the bound control (which is what is happening in your case). This is visible in the sourcecode, LLBLGenProDataSourceView2.cs, line 859.
The problem however is in LLBLGenProDataSourceViewBase.cs, line 635 and further: the field specified by the grid isn't a field of the entity viewed, so it checks whether the sorting has to take place client side (which will take into properties of classes) or server side (which will only work on db fields obviously).
In LivePersistence, it will sort on one side only: the one set on the datasource control. This means that if serverside is specified, it won't sort on the client.
I now finally understand what you want
The thing is though: to sort on the client, it has to have its sorter specification set as 'client' so it won't sort on the server. This is because it has to generate a sort expression from the column clicked and then decide where to execute it: client or server.
It comes down to: is the column clicked a known field? If so, sort on the server (which will work), or if it's not a known field, it will ignore it, but you now want to sort it on the client.
This is odd behavior though: the client sort will be on the data in the grid, but when the sort is done on a field which is in the DB, it will be done on the server so it will read in new data into the grid.
I don't see a solution to this. Please correct me if I missed something though!