使用 .NET Mobile 控件在路上






3.06/5 (5投票s)
2006年2月28日
9分钟阅读

34736
场景如下:您的老板想要随时随地获取信息,但他讨厌随身携带笔记本电脑。他厌倦了携带它乘坐飞机和到处跑的麻烦。他想要一个移动应用程序,为他提供通常在您的外联网上访问的信息。
引言
使用 .NET Mobile 控件在路上
场景如下:您的老板想要随时随地获取信息,但他讨厌随身携带笔记本电脑。他厌倦了携带它乘坐飞机和到处跑的麻烦。他想要一个移动应用程序,为他提供通常在您的外联网上访问的信息。
现在,假设老板正在去与我们一家顶级供应商在波士顿举行的一次重要会议的路上。他告诉你,他希望你设计一个应用程序,他可以为你的公司销售的每件产品查找供应商信息——这样所有数据都可以让他随身携带……他需要它在他的手机上可用,并且需要在本周四之前完成。
别担心。当老板掏出他的诺基亚手机查看波士顿螃蟹肉(我们的一款畅销产品)的供应商信息时,他将获得我们在数据库中的所有供应商信息。这包括联系人的姓名、头衔以及公司的地址和电话号码——老板期待与这位客户一起享用丰盛的螃蟹晚餐,他需要知道去哪里以及联系谁。
就像 20 世纪 90 年代 PC 浏览器爆炸式增长一样,联网手机的普及在过去几年中呈爆炸式增长,IT 开发人员争相为渴望信息的客户提供他们所需的内容。以前,您不得不手动编写多个移动网页——同时意识到您的客户可能正在连接的许多不同协议以及客户端使用的不同语言。这对任何人员不足的 IT 部门来说都是一场噩梦,因为它不仅意味着要保持页面最新,还要密切关注互联网电话社区的初期技术变革。
入门
对于这个场景,我安装了 VS.NET Mobile Internet Toolkit,并在不到一个小时内完成了此代码——所有这些都归功于 .NET 框架的惊人易用性和集成性。Mobile Internet Toolkit 是一组控件,允许开发人员创建可以连接和通信到您的 Web 服务器的移动应用程序——将内容传输到您的手机、PDA 或其他便携式设备。它可从 MSDN 免费下载——只需搜索 Microsoft Mobile Internet Toolkit。
我将带您了解 Mobile Internet Toolkit 的一些功能,然后我们将为老板构建该应用程序。
在开始之前,我建议您上网并获取一个手机模拟器。这将帮助您比 VS.NET 显示的视图更真实地进行设计。来自 phone.com 的友好人士一直在努力创建顶级仿真软件,该软件可让您模拟许多不同的手机浏览器。在向世界发布您的移动应用程序之前,您需要确保其功能符合您的预期——做到这一点最好的方法是使用 模拟器。
一切都是 .NET
Mobile Toolkit 最酷的地方在于它利用了 .NET Framework。这意味着您可以使用创建窗口和 Web 应用程序时使用的相同语言来编程为移动设备设计的软件。如果您熟悉如何在 Visual Studio .NET 中创建 Web 或 Windows 应用程序,您将很快学会创建移动应用程序。
加载 Mobile Toolkit 后,您将创建一个 ASP.NET 项目并向其中添加一个 Mobile Web 窗体。一旦定义了 Mobile Web 窗体,您就可以几乎完全像使用普通 Web 窗体一样使用它。
快速到达目的地
创建一个应用程序供老板浏览公司供应商信息很容易实现。我们将使用我们都熟悉的 NorthWind 数据库来说明轻松创建移动应用程序并运行它。
创建移动应用程序的秘诀之一是将其分解为最简单的部分。请记住,我们正在为适合您口袋的屏幕编码,因此我们需要遵循一个简单的规则:保持简单,愚蠢。
创建移动应用程序与创建 Web 应用程序一样简单,只有一些区别。一个关键的区别是您将在一个移动页面上使用多个窗体。您可以将一组窗体视为一叠卡片,您可以在移动设备上翻转和显示它们。您可以在每个页面上只使用一个窗体,但将两个或三个功能相关的窗体分组在同一页面上是最简单的。这将使您的应用程序更易读、更简洁——如果您在窗体之间传递信息,这也有助于减少代码。您可以通过设置移动页面的 ActiveForm 属性在窗体之间切换——这允许您将新信息“推送到表面”在您的应用程序中。
我们的主页面 productsView.aspx 包含两个窗体:Product 和 SupplierInfo。
这两个窗体都很简单——每个窗体只包含一个控件。Product 窗体显示我们在可浏览列表中销售的许多产品,我们将使用的控件是
ObjectList
。SupplierInfo 窗体显示我们在数据库中拥有的所有供应商信息——我们使用的是 TextView
对象。应用程序的工作原理大概是这样:老板可以从一个窗体中选择一个特定产品,然后在另一个窗体中查看相关的供应商信息。当老板选择一个产品时,SupplierInfo 窗体将被激活并填充我们拥有的关于该供应商的所有信息。很简单,是吧?
代码如下
使用 .NET Mobile 控件在路上
HTML 代表超文本标记语言 HTML 我们的页面 productsView.aspx,我们看到了一些熟悉的功能和一些新概念
<body Xmlns:mobile="http://schemas.microsoft.com/Mobile/WebForm">
<mobile:Form id="Products" runat="server" Paginate="True">
<mobile:ObjectList id="ObjectList1" runat="server"
OnItemSelect="getSupplierInfo"
OnItemCommand="ObjectList1_ItemCommand"
LabelStyle-StyleReference="title"
CommandStyle-StyleReference="subcommand">
<Command Name="View" Text="View"></Command>
</mobile:ObjectList>
</mobile:Form>
<mobile:Form id="SupplierInfo" runat="server" Paginate="True">
<mobile:TextView id="TextView1" runat="server">
TextView</mobile:TextView>
</mobile:Form>
</body>
如果您编程过 ASP,这都是很直接的东西,ASP 是 Microsoft 基于 IIS 的服务器端脚本架构 ASP .NET .NET 是 Microsoft 的一个应用程序框架。" . 我们使用了两个 <mobile:Form>
标签来区分我们的窗体以及它们包含的对象。请特别注意 <mobile:ObjectList>
标签——这是我们放置在我们 Products 窗体上的控件。此对象几乎与 DataList
对象在 ASP.NET 中完全相同,因此您在为其编程时不会遇到任何麻烦。请注意 OnItemSelect
事件会触发我们的 getSupplierInfo()
方法。当老板正在查看我们的产品列表时,他所做的选择会触发 getSupplierInfo()
方法,该方法会查找供应商信息并显示 Supplier 窗体。
代码
让我们开始一步步讲解一些代码,以展示我们是如何为老板创建这个简单而有效的应用程序的。当我们第一次访问我们的 products.aspx 页面时,我们的Page_Load
事件会触发,我们将活动窗体设置为我们的 products 窗体,该窗体显示我们销售的产品名称。
private void Page_Load(object sender,
System.EventArgs e
{
//在此处放置用户代码以初始化页面
ActiveForm = Products;
}
一旦我们将ActiveForm
设置为我们的 Products 窗体,魔力就开始了。我们的 Products 窗体有一个 `Activate` 事件,在该事件中我们触发一个检索和格式化所需信息的方法。
private void Products_Activate(object sender,
System.EventArgs e)
{
getProductList();
}
该getProductList()
方法会向我们的数据库发出 SQL 语句调用,获取一个 DataSet 并将其绑定到我们的 Mobile Web 控件。
public void getProductList()
{
try
{
string strSQL = "select productname, supplierid from products
order by productname";
clsMsSQL oSQL = new clsMsSQL();
DataSet oDS = oSQL.getSqlDataSet(strSQL);
ObjectList1.DataSource = oDS.Tables[0].DefaultView;
ObjectList1.DataBind();
}
catch(System.Exception e)
{
string x = e.ToString();
}
}
我们所做的是调用 NorthWind 数据库来检索表中所有产品的 productname 和 supplierid。我们像在使用常规 Web 窗体中的 DataList 控件一样设置 DataSource 和 DataBinding。还能更简单吗?
现在,当老板选择他的某个产品时,Suppliers 窗体将被启动,并且TextView
对象将被填充所选的供应商信息。他可以在他的手机上自由滚动并查看供应商的信息。
让我们看一下从数据库获取供应商信息的代码。
public void getSupplierInfo(object sender,
System.Web..MobileControls.ObjectListSelectEventArgs e)
{
TextView1.Text = getSupplier(Convert.ToInt32(e.ListItem[1]));
ActiveForm = SupplierInfo;
}
getSupplierInfo
调用方法 getSupplier
,并通过 `t_id` 参数传递 `SupplierId`,最后将 SupplierInfo 窗体的 `TextView` 对象设置为显示供应商信息。
public string getSupplier(Int32 t_id)
{
string strSupplier = "";
Int32 i = 0;
Int32 x = 0;
try
{
string strSQL = "select * from suppliers where supplierid = " + t_id;
clsMsSQL oSQL = new clsMsSQL();
DataSet oDS = oSQL.getSqlDataSet(strSQL);
System.Text.StringBuilder oSB = new System.Text.StringBuilder();
//循环遍历 DataSet 并获取我们想要的内容...
for (i=0;i<oDS.Tables[0].Rows.Count;i++)
{
for (x=0;x<oDS.Tables[0].Columns.Count;x++)
{
oSB.Append("<b>" + oDS.Tables[0].Columns[x].ColumnName.ToString()
+ "</b> " + oDS.Tables[0].Rows[i][x].ToString() + "<br>");
}
}
strSupplier = oSB.ToString();
}
catch(System.Exception e)
{
string xyz = e.ToString();
}
return strSupplier;
}
在我们的 getSupplier 方法中,我们所做的只是将 NorthWind 的 Suppliers 表中的列名和关联值连接起来。我们使用 HTML 元素<b>
来标记列名以进行一些基本的格式化,这样我们就完成了。我们返回一个格式化的字符串,`TextView` 对象会显示它——瞧!老板获得了他的信息,赶上了公司聚会,享用了丰盛的螃蟹晚餐,每个人都很高兴!
结束语
显然,这是 Mobile toolkit 强大功能的一个基本示例——我希望它能说明您在使用此工具时可能具备的基本功能。如果您已经有一个用于提供信息的网站,您也可以轻松地创建该应用程序的移动版本。至少,您可以仅公开应用程序中提供关键、动态信息的那些功能。最终用户可以连接到该站点并获取最新信息。
Microsoft Mobile Internet Toolkit 使为企业开发和部署移动应用程序变得非常快捷方便。如果您熟悉 ASP.NET 编程,那么在转向为移动设备编程时将不会遇到任何问题。欧洲和日本已经接受了这些微小的手机浏览器——所有迹象都表明在美国将会有一次大规模的推广。Microsoft 正在更新 Visual Studio .NET 1.1 以包含对 Mobile 窗体的本地支持——这意味着越来越多的移动应用程序将浮出水面。听我的建议:立即行动。