What I did is kind of a hack. See attached.
I made a copy of your [select calc] calc. In it I changed the CASE to point to the dimension that is one level below the parameter's value. (You'll have to figure out what to do with city.)
On Sheet 2 I placed [Select Calc] on the data shelf, and I used the copy as the ROWS value.
Next, take a look at the action. I did not use "all" as the field to pass. I specifically used [Select Calc]. Because I have it on Sheet 2 (on the data shelf), tableau will filter down to the region or state that was selected on Dashboard 1. And within that region or state, tableau will display on rows the lower dimension.
this is a great start, and i will try it. In the mean time just on top of my mind, when the user navigates from dashboard 1 by clicking on "Colorado" the to dashboard 2 which will show him the cities within "colorado", however the parameter will still say "state" will it not be confusion for the user ?
Yes. The parameter value will not change.
We don't have the capability to change a parameter value dynamically.
You don't have to display the parameter on Dashboard 2, so that way the user won't see it and be confused. You can make your own header that says "by City" or whatever you need. Make a display calc that looks similar to [Select Calc], only it will instead set a string value, like "State" or "City", and you can display that in the sheet's title. Or even in a separate sheet that you can position wherever you want.
The only limitation here is if you want to allow the user to change the setting of the parameter on Dashboard 2. But if I were designing this, I would force the user's input to that parameter only on Dashboard 1, because that's the starting point of this whole operation.
Apologies for the late response however it did help me achieve what i wanted obviously with some trade offs.