加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MultiView详解

(2012-07-22 23:55:32)
标签:

multiview

详解

杂谈

  ASP.NETMultiView实际上是有点像在c/s开发中很常见的tabcontrol控件,可以在一个页面中,放置多个"View"(我们称为选项卡),比如可以用MultiView控件,可以让用户在同一页面中,通过切换到每个选项卡,从而看到要看的内容,而不用每次都重新打开一个新的窗口。效果如下:

http://s1/middle/9e32518fx7a248469edf0&690

如果要切换视图,可以使用控件的ID或者View控件的索引值。在 MultiView 控件中,一次只能将一个 View 控件定义为活动视图。如果某个 View 控件定义为活动视图,它所包含的子控件则会呈现到客户端。可以使用 ActiveViewIndex 属性或SetActiveView 方法定义活动视图。如果 ActiveViewIndex 属性为空,则 MultiView 控件不向客户端呈现任何内容。如果活动视图设置为MultiView 控件中不存在的 View,则会在运行时引ArgumentOutOfRangeException

常用属性、方法和事件:

ActiveViewIndex属性:用于获取或设置当前被激活显示的View控件的索引值。默认值为-1,表示没有View控件被激活。0表示第一个View1表示第二个View,以此类推。

SetActiveView方法:用于激活显示特定的View控件。如MultiView1.SetActiveView(View2),表示激活View2.

GetActiveView方法:返回 MultiView控件的当前活动 View 控件。如TextBox1.Text = MultiView1.GetActiveView().ID;

ActiveViewChanged事件:当视图切换时被激发。

四个静态只读字段:若要允许用户在 MultiView 控件中的 View 控件之间进行导航,可将LinkButtonButton控件添加到每个View 控件。若要利用MultiView控件对当前活动 View 进行自动更新,请将按钮或链接按钮的 CommandName 属性设置为与所需导航行为对应的命令名字段的值,这些命令名字段如下:PreviousViewCommandNameNextViewCommandName
SwitchViewByIDCommandName
SwitchViewByIndexCommandName

典型实例:http://s10/middle/9e32518fxc56d328088b9&690

 

1.前台代码:

<head runat="server">

    <title></title>

    <style type="text/css">

a:link

{

      color: #336699;

      background: transparent;

}

a

{

      color: #336699;

      text-decoration: none;

      background: transparent;

}

    </style>

</head>

<body style="height: 152px; width: 930px">

    <form id="form1" runat="server">

    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="D?" />

    <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0"

        onactiveviewchanged="MultiView1_ActiveViewChanged">

        <asp:View ID="View1" runat="server">

            正常情况:êo<br />

            <br />

            <br />

        </asp:View>

        <asp:View ID="View2" runat="server">

            出错情况:êo<br />

            <br />

            <br />

    </asp:View>

    </asp:MultiView>

 

    <p>

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

    </p>

   

    </form>

</body>

</html>

2.后台C#代码:

protected void Button1_Click(object sender, EventArgs e)

    {

        if (MultiView1.ActiveViewIndex == 0)

        {

            MultiView1.ActiveViewIndex = 1;

//MultiView1.SetActiveView(View2);

        }

        else

        {

            MultiView1.ActiveViewIndex =0;

        }

    }

    protected void MultiView1_ActiveViewChanged(object sender, EventArgs e)

    {

        TextBox1.Text = "当前为" + MultiView1.GetActiveView().ID;

}

3.效果图:

http://s9/middle/9e32518fxc56d341f8b08&690

http://s9/middle/9e32518fxc56d369d91c8&690

 

 

一般情况下,网上的各种技术教程存在这样的问题:它就算很仔细地将过程很详细地写出来,但自己实际模仿过程中,总会出现很多它没有给出的错误。我觉得这是我们必须注意的,这也许就是锻炼调错的心态和方法。

【错误情况01】如图:当插入第二个View时提示出错,View类型的控件只能放在MultiView类型控件内部

http://s11/middle/9e32518fxc56d396d506a&690

 

【原因分析01】显而易见,MultiView必须结合View控件来使用, View必须放在MultiView中,否则一定报错。

【解决方案01】直接拖动控件不是很方便,还不如去修改前台代码,将上图中选中的部分(即View2)剪切放在MultiView中,如下图:

http://s7/middle/9e32518fxc56d3ad231e6&690

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有