The best way is to add one control for each of the views (day/week/month) and hide all except of one.
1. You can do this by simply wrapping them in a div with style="display:none" and change this property.
2. You can use a tab control (e.g. from AJAX Control Toolkit - http://ajaxcontroltoolkit.codeplex.com/).
3. You can use multiple UpdatePanels.
There are a few related problems, though:
1. If the div with the control is hidden during initialization the position calculations will fail (it's not possible to get dimensions of an element hidden using display:none) and it will cause some problems, e.g. the scrollbar position will be reset and the background cells may not get initialized in the dynamic rendering mode in the Scheduler.
This can be fixed by only internal API calls at this moment. In the next release, it will be possible to show and hide the controls using client-side .show() and .hide() methods which will include the recalculation.
2. You will need to store the selected date separately (so the day doesn't get reset if you switch from day to week view and back).
3. You will need to refresh the events when switching the views.
A more elegant client-side solution is under way but it's not available yet.