MultiView
和View
控件允许将页面的内容分成不同的组,每次只显示一个组。每个View
控件管理一组内容,所有的View
控件一起放在一个MultiView
控件中。
MultiView
控件一次负责显示一个View
控件。显示的视图称为活动视图。
MultiView
控件的语法是:
<asp:MultView ID= "MultiView1" runat= "server"></asp:MultiView>
View
控件的语法是:
<asp:View ID= "View1" runat= "server"></asp:View>
但是,View
控件不能独立存在。如果尝试单独使用它,则会导致错误。它始终与多视图控件一起使用,如下所示:
<asp:MultView ID= "MultiView1" runat= "server">
<asp:View ID= "View1" runat= "server"> </asp:View>
</asp:MultiView>
视图和多视图控件的属性
View
和MultiView
控件都是从Control
类派生的,并继承了它的所有属性,方法和事件。 View
控件最重要的属性是Boolean
类型的Visible
属性,它设置视图的可见性。
MultiView
控件具有以下重要属性:
编号 | 属性 | 描述 |
---|---|---|
1 | Views |
MultiView 中的View 控件的集合。 |
2 | ActiveViewIndex |
表示活动视图的基于0 的索引。如果没有视图处于活动状态,则索引为-1 。 |
与MultiView
控件导航关联的按钮控件的CommandName
属性与MultiView
控件的某个相关字段相关联。
例如,如果CommandName
值为NextView
的按钮控件与多视图的导航相关联,则单击按钮时会自动导航到下一个视图。
下表显示了上述属性的默认命令名称:
编号 | 属性 | 描述 |
---|---|---|
1 | NextViewCommandName |
NextView |
2 | PreviousViewCommandName |
PrevView |
3 | SwitchViewByIDCommandName |
SwitchViewByID |
4 | SwitchViewByIndexCommandName |
SwitchViewByIndex |
多视图控制的重要方法是:
编号 | 方法 | 描述 |
---|---|---|
1 | SetActiveview |
设置活动视图 |
2 | GetActiveview |
检索活动视图 |
每次更改视图时,页面都会回发到服务器,并引发许多事件。一些重要事件是:
编号 | 方法 | 描述 |
---|---|---|
1 | ActiveViewChanged |
当视图改变时引发 |
2 | Activate |
由活动的视图引发 |
3 | Deactivate |
由非活动的视图引发 |
除了上面提到的属性,方法和事件,multiview
控件继承了控件和对象类的成员。
示例
示例页面有三个视图。每个视图都有两个按钮用于导航视图。首先打开Visual Studio,创建一个名称为:MultiViews 的空ASP.NET网站项目,如下所示 -
在这个项目名称上点击右键,在弹出的选项中选择:添加 -> 添加新项,选择Web窗体,创建一个文件:Default.aspx, 如下所示 -
以下是Default.aspx 文件代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>多视图示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>多视图和视图控件</h2>
<hr />
选择视图:<asp:DropDownList ID="DropDownList1" runat="server" Autopostback="true" onselectedindexchanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="0">1</asp:ListItem>
<asp:ListItem Value="1">2</asp:ListItem>
<asp:ListItem Value="2">3</asp:ListItem>
</asp:DropDownList>
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0" onactiveviewchanged="MultiView1_ActiveViewChanged">
<asp:View ID="View1" runat="server">
<h3>这是第一个视图</h3>
<br />
<asp:Button CommandArgument="View3" CommandName="SwitchViewByID" ID="btnlast" runat="server" Text ="<<前一个视图" />
<asp:Button CommandName="NextView" ID="btnnext1" runat="server" Text = "后一个视图>>" />
</asp:View>
<asp:View ID="View2" runat="server">
<h3>这是第二个视图</h3>
<asp:Button CommandName="PrevView" ID="btnprevious2" runat="server" Text = "<<前一个视图" />
<asp:Button CommandName="NextView" ID="btnnext2" runat="server" Text = "下一个视图>>" />
</asp:View>
<asp:View ID="View3" runat="server">
<h3> 这是第三个视图</h3>
<br />
<asp:Calendar ID="Calender1" runat="server"></asp:Calendar>
<br />
<asp:Button CommandName="PrevView" ID="btnprevious" runat="server" Text = "<<前一个视图" />
<asp:Button CommandArgument="0" CommandName="SwitchViewByIndex" ID="btnfirst" runat="server" Text = "后一个视图>>" />
</asp:View>
</asp:MultiView>
</div>
</form>
</body>
</html>
以下是Default.aspx.cs 文件代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["id"] != null)
{
MultiView1.ActiveViewIndex = Convert.ToInt32(Request.QueryString["id"]);
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//设置当前被显示的控件为下拉列表被选中的值
MultiView1.ActiveViewIndex = Convert.ToInt32(DropDownList1.SelectedValue);
}
// 默认显示哪个视图?
protected void MultiView1_ActiveViewChanged(object sender, EventArgs e)
{
// MultiView1.ActiveViewIndex = 0;
}
}
运行上面项目,得到以第一个界面如下 -
可通过上面的按钮提示,切换视图 -
注意以下几点:
MultiView.ActiveViewIndex
确定将显示哪个视图。这是在页面上呈现的唯一视图。 当没有显示视图时,ActiveViewIndex
的默认值是-1
。由于ActiveViewIndex
在本例中定义为2
,所以在执行时会显示第三个视图。