Here's yet another cool new ASP.NET control:
MultiView. Basically you can have several content "areas" defined and which one shows is
mutally exclusive. So I have a
TreeView that changes the current
View based on the selected node...
<table
border="1">
<tr>
<td>
<asp:TreeView
Height="547px"
ID="TreeView1"
runat="server"
ShowLines="True"
OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
<Nodes>
<asp:TreeNode
Text="Car"
Value="Car">
<asp:TreeNode
Text="Part1"
Value="Part1"></asp:TreeNode>
<asp:TreeNode
Text="Part2"
Value="Part2">
<asp:TreeNode
Text="Subassembly"
Value="Subassembly"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</Nodes>
</asp:TreeView>
</td>
<td>
<asp:MultiView
ID="MultiView1"
runat="server">
<asp:View
ID="viewCar"
runat="server">
view car
</asp:View>
<asp:View
ID="viewPart1"
runat="server">
view part1
</asp:View>
</asp:MultiView>
</td>
</tr>
</table>
In my code-behind, I don't worry about setting one view to visible and others to false. In fact, you can't. You have to call
SetActiveView() and it will do this for you!
protected
void TreeView1_SelectedNodeChanged(object
sender, EventArgs e)
{
switch (this.TreeView1.SelectedNode.Value)
{
case "Car":
this.MultiView1.SetActiveView(viewCar);
break;
case "Part1":
this.MultiView1.SetActiveView(viewPart1);
break;
}
}
Pretty slick, huh? :-)