Asp.net移动开发指南(5)

1.4.3 响应控件事件

ASP.NET移动控件公开了一个包含属性、方法和事件的对象模型。可以使用该对象模型非常方便地修改页面和与页面交互。移动控件的对象模型不依赖于设备,因此可以通过统一方式与其进行交互,而与目标设备无关。清单1-3中的示例演示在移动Web页面中如何处理Command控件的Click事件。当代码收到此事件时,它以编程方式定位到另一窗体。新激活的窗体触发Activate事件,可以使用该事件初始化窗体。清单1-4说明了页面所对应的代码文件ControlEvents.aspx.vb中的实现代码。

清单1-3 Command控件的Click事件
+展开
-HTML
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <mobile:Form id="Form1" runat="server">
        <mobile:Label ID="Label1" Runat="server" StyleReference="title">你是谁?</mobile:Label>
        <mobile:TextBox ID="TextBox1" Runat="server">
        </mobile:TextBox>
        <mobile:Command ID="Command1" Runat="server" OnClick="Command1_Click">Command</mobile:Command>
    </mobile:Form>
    <mobile:Form ID="Form2" Runat="server" OnActivate="Form2_Activate">
        <mobile:Label ID="Label2" Runat="server" StyleReference="title">Labe2</mobile:Label>
        <mobile:Link ID="Link2" Runat="server" NavigateUrl="#Form1">Link2</mobile:Link>
    </mobile:Form>
</body>
</html>


清单1-4 ControlEvents.aspx
+展开
-C#
public partial class _Default : System.Web.UI.MobileControls.MobilePage
{
    string sinput;
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Command1_Click(object sender, EventArgs e)
    {
        sinput = string.Format("嗨! {0},你好!",TextBox1.Text);
        this.ActiveForm = Form2;
    }
    protected void Form2_Activate(object sender, EventArgs e)
    {
        Label2.Text = sinput;
    }
}


图1-5显示了清单1-3所演示示例运行时的Web页面。


图1-5 在移动Web页面中处理Command控件的Click事件

1.4.4 显示菜单

移动用户界面的典型特性是有菜单,它允许用户轻松浏览页选项。在移动Web窗体页面上,构建菜单的一种常用方法是使用List移动控件。清单1-5中的示例演示使用List移动控件在移动Web窗体中显示菜单。当用户单击一个选项时,将触发List移动控件的ItemCommand事件。页面所对应的代码使用单击选择的选项改变第二个窗体的内容,然后定位到第二个窗体。清单1-6说明了页面所对应的代码文件Menu.aspx.vb中的实现代码。

清单1-5 在移动Web窗体中显示菜单
+展开
-HTML
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <mobile:Form id="Form1" runat="server">
        <mobile:Label ID="Label1" Runat="server">城市列表</mobile:Label>
        <mobile:List ID="List1" Runat="server" OnItemCommand="List1_ItemCommand">
        <Item Text="北京" Value="中国"/>
        <Item Text="上海" Value="中国"/>
        <Item Text="广州" Value="广东"/>
        <Item Text="深圳" Value="广东"/>
        <Item Text="长沙" Value="湖南"/>
        <Item Text="青岛" Value="山东"/>
        </mobile:List>
    </mobile:Form>
    <mobile:Form ID="Form2" Runat="server">
        <mobile:Label ID="Label2" Runat="server">Label</mobile:Label>
    </mobile:Form>
</body>
</html>

清单1-6 Menu.aspx.cs
+展开
-C#
public partial class Default2 : System.Web.UI.MobileControls.MobilePage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void List1_ItemCommand(object sender, ListCommandEventArgs e)
    {
        Label2.Text = string.Format("{1} {0}",e.ListItem.Text,e.ListItem.Value);
        this.ActiveForm = Form2;
    }
}


图1-6显示了清单1-5所演示示例运行时的Web页面。



图1-6 在移动Web窗体中显示菜单

1.4.5 显示文本

在移动Web窗体上有3种显示文本的方法。一种是将文本放置在Label控件中,这种方法适合显示少量文本的情况。一种是将文本直接放置在窗体上。将文本放置在TextView控件中,这种方法适合显示大量文本的情况。TextView控件可以动态设置包含一些通用标记的文本。支持的标记有<b>、<i>、<p>、<br>和<a>。当在单个窗体上放置大量文本时,可以通过将Paginate属性设置为true来使用窗体的分页功能。窗体将根据目标设备的特性,对其内容进行分页。

清单1-7中的示例显示了TextView控件的运行情况。在Pocket PC设备上,文本占用一页(但它可以滚动)。在基于WML的移动电话上,文本在多个屏幕上呈现。在这两种情况中,TextView控件都能自动为用户提供在文本页之间浏览的用户界面。图1-7显示了清单1-7所演示示例运行时的Web页面。

清单19-7 在窗体上显示大量文本
+展开
-HTML
<%@ Page Language="VB" AutoEventWireup="false" CodeFile=" DisplayText.aspx.vb" 
Inherits=" DisplayText" %>

<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>

<html xmlns="http://www.w3.org/1999/xhtml" >

<body>

<mobile:Form id="Form1" runat="server" Paginate="True" BackColor="#E0E0E0">

    <mobile:Label ID="Label1" Runat="server" Font-Bold="True" Font-Size="Large" ForeColor="Teal">第18章 移动Web开发</mobile:Label>

    <mobile:TextView ID="TextView1" Runat="server" ForeColor="Teal">……</mobile:TextView>

    </mobile:Form>

</body>

</html>


图1-7 在窗体上显示大量文本

加支付宝好友偷能量挖...


评论(0)网络
阅读(152)喜欢(0)Asp.Net/C#/WCF