ASP.NET移动开发之SelectionList控件(2)

Selection列表控件的类型

  Selection列表控件允许用户只能做出单项的选择,当然这需要你将Selection列表控件的SelectType属性设置为DropDown、ListBox或Radio。如果你将Selection列表控件的SelectType属性设置为MultiSelectListBox 或CheckBox的话,用户将可以同时选择列表中的多个选项。在代码中,你可以使用SelectionList类中的SelectType方法来设置或获取列表控件所要使用的类型。如果Selection列表控件采用的是多项选择模式的话,那么IsMultiSelect属性将返回一个true值。

  注意,在WML 1.2或者以前的WML版本中,是无法支持单项框、下拉列表等图形用户界面元素的。在这些只上述的WML设备上,Selection列表控件是以一个WML<select>元素进行呈现的,<select>元素也支持单项和多项的方式。在WML浏览器上,你可以使用软键(softkey)定位到一个数据项上进行选择,也可以使用一个数字键选择一个数据项,很显然,使用数字键的方式更便捷也更直观。因此,如果你想采用数字键来选择列表中的数据项的话,那么你必须确保该列表的项数应该小于或等于9个。下图是Selection列表控件的不同类型在不同浏览器上的显示效果:


            
  构建一个静态列表

  在静态列表中,数据项是使用Text属性指定一个字符串来进行呈现的,而不是动态地读取自数据源中的某个字段内容。要指定一个静态列表的数据项,你必须使用<Item>属性,具体的示例代码如下:

+展开
-HTML
<Item Text="Text" Value="Value" Selected="{True|False}" />


  Text属性用来指定在列表中显示的数据项信息,而Value就是相关联的隐藏值。如果你希望某数据项在默认情况下就处于被选中的状态的话,那么你可以将Selected属性设置为True。

  注意,每个Selection列表控件都与一个MobileListItemCollection对象关联。当你使用服务器控件语法静态地定义数据项,实际上是将与每个数据项对应的MobileListItem对象添加到MobileListItemCollection对象中。你可以在代码中使用Items属性来访问MobileListItemCollection集合。你还可以使用MobileListItemCollection类中的Add、Clear和Remove等方法来添加、清除或删除数据项。这些方法的具体用法你可以参考相应的MSND帮助文档,这里就不再详细介绍了。

  识别Selection列表控件中被选中的数据项(单项模式)

  在Selection列表控件的单选模式下,你可以使用Selection.Name属性来获取被选中数据项的显示文本,还可以使用Selection.Value属性获取被选中数据项的对应的隐藏值。下面的两个程序清单就是一个显示被选中数据项对应隐藏值的示例代码:

  Default.aspx:
+展开
-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">请选择想要购买的手器品牌</mobile:Label>
 <mobile:SelectionList 
 id="SelectionList1" runat="server">

<Item Text="Dopoda" Value="P800" />
<Item Text="Motorola" Value="A1200" />
<Item Text="Nokia" Value="N70" />
<Item Text="Samsung" Value="E638" />
 </mobile:SelectionList>
  <mobile:Command runat="server" id="Command1" 
OnClick="HandleSingleSelection">
提交选择</mobile:Command>
</mobile:Form>
<mobile:Form ID="Form2" Runat="server">
<mobile:Label runat="server" id="Label2">你选择的手机型号为:</mobile:Label>
<mobile:Label runat="server" id="Label3"/>
</mobile:Form>
</body>
</html>


  程序代码说明:在这个程序中,我们在该页面上创建了两个窗体,Form1上放置了一个SelectionList列表控件,默认的类型为下拉列表,所以你只可以选择一项。当然,你还可以显式地设置SelectType属性为"DropDown"。在代码中可以看到,我们使用<Item>元素静态地定义各个数据项,其中用Text属性设置列表控件要显式的字符信息,而Value属性就是与显示的字符信息相关联的隐藏值(本例中为手机的制造商和机型)。由于你选择一个数据项后,SelectionList列表控件无法自动将改变后的信息自动回发到服务器上,所以还在Form1上再放置了一个Command控件,用来产生一个回发。也就是说当用户选择好了列表中的某项后,在点击提交按钮就可以将相应的信息回发到服务器端进行处理了,我们在本例中设置了该Command控件OnClick事件的处理函数为HandleSingleSelection,该事件处理函数的具体内容你可以查看对应的代码后置文件。Form2的功能就是显示那个数据项被用户选中,当你点击提交按钮后,Form2窗体将作为活动窗体,显示信息。
  Default.aspx.cs
+展开
-C#
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.Mobile;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.MobileControls;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.MobileControls.MobilePage
{
protected void HandleSingleSelection(object sender, EventArgs e)
{
this.ActiveForm = Form2;
String selectedMobile = SelectionList1.Selection.Value;
Label3.Text = SelectionList1.Selection + selectedMobile;
}
}


  程序代码说明:HandleSingleSelection就是Command控件的OnClick事件的处理函数。一旦用户点击了该Command按钮,将使Form2成为活动窗体。并在Label3控件上将选中的数据项的字符信息和隐藏值显示出来。

  如果你不在移动Web.Config文件中设置如下的代码,则在Openwave浏览器中会出错:

+展开
-HTML
<sessionState mode="InProc" cookieless="true" timeout="20"></sessionState>


  为此你最好将如下的移动Web.Config配置代码替代Visual Studio自动生成的移动Web.Config配置代码:

  Web.Config
+展开
-XML
<?xml version="1.0"?>
<!-- 注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来 

  配置应用程序的设置。可以使用 Visual Studio 中的"网站"->"ASP.NET 配置"选项。

  设置和注释的完整列表在machine.config.comments 中,该文件通常位于 \Windows\Microsoft.NET\Framework\v2.0.xxxxx\Config 中
-->

<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<!-- 
设置 compilation debug="true" 将调试符号插入已编译的页面中。
但由于这会影响性能,因此只在开发过程中将此值设置为 true。
-->

<compilation debug="true"/>
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,以标识传入的用户。 
-->

<authentication mode="Windows"/>
<!--
如果在执行请求的过程中出现未处理的错误,则通过 <customErrors> 节
可以配置相应的处理步骤。具体说来,开发人员通过该节可以
配置要显示的 html 错误页以代替错误堆栈跟踪。
-->

<customErrors mode="RemoteOnlydefaultRedirect="GenericErrorPage.htm">
<!-- 
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
-->

</customErrors>
<!--
完全限定客户端重定向的 URL
有些移动设备要求对客户端重定向的 URL 进行完全限定。
-->

<httpRuntime useFullyQualifiedRedirectUrl="true"/>
<!--
指定无 Cookie 的数据字典类型
这将使字典内容出现在本地请求 url 查询字符串中。
这是在无 Cookie 的设备上进行 Forms 身份验证所必需的。
-->

<mobileControls cookielessDataDictionaryType="System.Web.Mobile.CookielessData"/>

<sessionState mode="InProccookieless="truetimeout="20"></sessionState>

<deviceFilters>
<filter name="isJPhonecompare="Typeargument="J-Phone"/>
<filter name="isHTML32compare="PreferredRenderingTypeargument="html32"/>
<filter name="isWML11compare="PreferredRenderingTypeargument="wml11"/>
<filter name="isCHTML10compare="PreferredRenderingTypeargument="chtml10"/>
<filter name="isGoAmericacompare="Browserargument="Go.Web"/>
<filter name="isMMEcompare="Browserargument="Microsoft Mobile Explorer"/>
<filter name="isMyPalmcompare="Browserargument="MyPalm"/>
<filter name="isPocketIEcompare="Browserargument="Pocket IE"/>
<filter name="isUP3xcompare="Typeargument="Phone.com 3.x Browser"/>
<filter name="isUP4xcompare="Typeargument="Phone.com 4.x Browser"/>
<filter name="isEricssonR380compare="Typeargument="Ericsson R380"/>
<filter name="isNokia7110compare="Typeargument="Nokia 7110"/>
<filter name="prefersGIFcompare="PreferredImageMIMEargument="image/gif"/>
<filter name="prefersWBMPcompare="PreferredImageMIMEargument="image/vnd.wap.wbmp"/>
<filter name="supportsColorcompare="IsColorargument="true"/>
<filter name="supportsCookiescompare="Cookiesargument="true"/>
<filter name="supportsJavaScriptcompare="Javascriptargument="true"/>
<filter name="supportsVoiceCallscompare="CanInitiateVoiceCallargument="true"/>
</deviceFilters>
</system.web>
</configuration>

http://hi.baidu.com/zhiwei%5F117/blog/item/b10a7e2b99215a91033bf62d.html

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


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