Gbyte blog: Simple Views display switch
If you need a simple Views display switch to toggle e.g between a list and a grid display of a view, there are a couple of plug & play options already.
Display Suite and Quick Tabs are modules which provide this functionality but they seem to be quite an overkill for a simple display switch. View modes on the other hand seems to be exactly what is needed, however there is no stable version and the development one did not work for me.
How it needs to work
Our use case dictates that while switching a display, the view needs to retain the exposed filter values and page number. The page will be reloaded, no AJAX magic here.
So let's create our own views display switch. In order to do that you will obviously be needing a view with at least two page displays showing content in different ways. You will also have to put some code into your custom module. If in doubt, refer to the countless other tutorials.
Set up your view
In the view named [view] set the path of [display_1] to e.g [page/grid], the path to [display_2] to e.g [page/list].
Create callback function
Create a simple callback function which will provide the switch in ready-to-be-displayed HTML.