ASP.NET多视图

MultiViewView控件允许将页面的内容分成不同的组,每次只显示一个组。每个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>

视图和多视图控件的属性

ViewMultiView控件都是从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,所以在执行时会显示第三个视图。


上一篇: ASP.NET日历控件 下一篇: ASP.NET面板控件