ASP.NET 移动控件的事件处理
和传统的ASP.NET控件一样,移动控件也可以在特定的状态下激发事件,并提供了一些默认事件来处理经常发生的方案。除此之外,移动控件也可以在某些情况下激发一些其它的处理事件(非默认的事件)。传统的ASP.NET程序中,用户通过浏览器执行某些操作时会激发相应的事件,移动设备浏览器也采用了类似的处理方式。我们可以将一个事件通过回发的方式传递到服务器端,继而引发服务器端对该事件的处理,最终的处理结果将以HTML的形式传递到客户端浏览器。处理一个由移动控件激发的默认事件是非常容易的,我们只需在页面中放置一个移动控件并双击该控件即可。下面为一个较常见的事件处理代码,即一旦用户单击命令按钮就激发其Click事件。
protected void cmdGetCustomer_Click(object sender, EventArgs e)
{……}
创建一个非默认的事件处理器也是非常容易的,我们现在无需考虑语言的相关性。如果你曾经使用过Visual
Studio 2003的话,你会发现用VB.NET来处理事件要比C#复杂。在当前的Visual Studio版本中已经将这两种语言的操作过程进行了统一,下面的步骤就是创建一个非默认事件处理器的详细步骤:
1. 在状态视图中点选要设置事件的控件。
2. 在属性窗口中选择事件按钮,也就是那个带有闪电标记的按钮。单击后就会在属性窗体中显示控件的所有的可用事件。
3. 双击你想处理事件的右侧空白栏,这时将切换到相应事件的代码视图状态。
使用容器控件 在ASP.NET 移动WEB窗体中提供了两种容器控件:Form控件和Panel控件。几乎所有的移动控件都是放置在这两种控件之中,唯独StyleSheet控件例外。StyleSheet控件可以单独地放置在页面中,该控件将会在以后的小节中进行详细的介绍。我们可以将属于同一组功能的移动控件都放置在一个容器控件中,这样使得程序的页面结构更加的清晰。我们还可以为一个容器控件设置特定的样式表,所有位于该容器的移动控件将会具有一致性的用户体验。注意,在页面中添加的容器控件是没有固定大小的,因为它将随着你在其中放置的控件而自动地进行调整,因此我们不可以显式地为容器控件指定一个特定的大小。
ASP.NET 移动WEB窗体对所有的控件都使用线性布局,即每行只放一个控件。这是因为众多的移动设备之间存在巨大的差异,尤其是一些支持WML的设备并不支持控件的并排显示。但是如果强制使用许多控件都支持的BreakAfter属性的话,则有相应的显示能力的设备上将启用并排显示的布局。另外,它会自动适应不支持并排呈现的设备的呈现规则。将 BreakAfter 属性设置为 false 将指示 ASP.NET 在所有具备相应显示能力的设备上并排放置控件。为了适应多种多样的移动设备,ASP.NET 移动设计器使您能够针对特定设备自定义移动 Web 窗体页和控件的外观。我将在后面的"设备筛选器"小节中详细介绍如何开发针对特定设备的应用程序。
Form控件 所有的内容和控件都包含在Form控件中,而且每个ASP.NET 移动WEB页面至少要包含一个Form控件,并且该页面可以包含多个Form控件。但是,当这些控件显示在移动设备上时,移动 Web 应用程序一次只能显示一个移动Form 控件。当你添加一个移动WEB窗体时会自动在页面上创建一个默认的Form控件。如果你需要在页面中添加多个Form控件时,可以在工具箱中直接拖拽出。
用户浏览到某移动Web窗体页时,默认情况下将显示该页面上的第一个Form控件。你也可以通过编码的方式直接在页面的Page_Load事件中指定一个Form控件为当前的活动窗体。当然你也可以采用编码的方式并且根据用户的输入信息导航到相应的Form控件上。在同一个页面的不同Form控件之间导航并不需要通过服务器的处理,因此可以极大地提高程序的响应速度。将一个页面组织成多个Form控件还有个优点,那就是可以在不同的Form控件间传递一些丰富的状态信息。因为一个页面上的所有 Form 控件都共享相同的代码隐藏文件和页面状态信息,因此各个Form 控件都可以共享相同的方法和成员。
由于ASP.NET移动WEB程序通常是在一些小屏幕的移动设备上运行的,为了适应这种特定的显示环境,你需要将一个普通的ASP.NET WEB页面分解成多个移动WEB页面。如果没有Form控件的话,这种分解过程是非常繁杂的,因为你需要在ASP.NET WEB页面和移动WEB页面间建立一个一对多的映射,这样使得程序难以维护。
最合适的方式就是在一个移动WEB页面放置多个Form 控件,这样使得ASP.NET WEB页面和移动WEB页面是一个一对一的镜像关系。在面对数据量较大的移动WEB页面时,将所有的Form控件在页面初始化时就全部加载到移动设备的响应时候是相当长的。但是一旦加载到移动设备后在各个Form控件进行导航的速度又是非常快的,因为一切信息都存放在本地的内存中。这种页面的加载方法总体上还是利大于弊的,开发人员可以根据实际的需求加以权衡,而且同一页面上的所有Form控件可以共享相同的代码隐藏文件和页面状态信息。
Panel(面板)控件 使用 Panel 控件可将窗体中的控件进行分组。这使您可以对整个组应用 StyleSheet 控件。面板还能帮助应用程序确定分页。ASP.NET 会尽量将一个面板中的所有控件都同时显示在屏幕上。
若要将面板添加到应用程序中,请从"工具箱"中将其拖放到应用程序。面板中的所有控件都继承该面板的样式。可以将面板插入Form控件或其他面板中。应用程序隐藏或显示面板时,它将对该面板包含的控件应用相同的操作。此外,应用程序还可将面板控件用作动态创建的控件的容器。
Panel控件必须放在Form控件中、另一Panel控件中或控件模板中。除StyleSheet控件、DeviceSpecific控件和Form控件外,所有其他控件也都必须放在Form或Panel控件中。
查看本文来源