1

我是编程方面的新手(几年前曾与 Delphi 合作过),但已经开始为 Windows Phone 7.5 Mango 构建应用程序,因为我对应用程序有一个好主意:D 在应用程序中,用户应该能够从列表中选择不同的位置(一个非常大的列表,5k+ 项) - 为确保所有用户始终获得最新列表,我在我的网站上创建了一个 SQL 以将列表生成为 XML - 我将其加载到应用程序通过httpwebrequest;我不太确定在处理大量列表时的最佳做法是什么,这些列表会经常更新等?

这不是你的主要问题,因为这似乎工作得很好——我真正的问题是,如何向我的应用程序添加搜索功能,以便用户可以搜索位置而不是滚动整个列表?

我的 SQL 由 ID、Country、State、Region、City(以及一些与搜索功能无关的表)组成。

我不知道解决这个问题的最佳方法是什么?我应该在我的网站上进行查询并将结果生成为 XML 并使用 httpwebrequest 将结果发送到手机 - 还是应该是设备上的搜索功能来搜索整个列表?如果是这样,我该怎么做?

谢谢 ;-)

4

2 回答 2

0

首先,我必须通知您,通过不使用无线网络的智能手机获取超过 5k+ 项的列表将需要一段时间。因此,在我看来,如果用户只对几个项目感兴趣,那么下载整个列表会浪费大量流量。这基本上意味着您正在下载一堆日期,但只使用其中的 0.01%,这不是您构建程序的方式。

因此,根据我的说法,您应该创建一个 Web 服务,以便用户可以调用该 Web 服务并使用其搜索参数发出一个 http 请求。然后你基本上只是在 SQL 搜索查询中使用参数,它可能是一个存储过程或只是代码中的裸露,但我不知道你的服务器/数据库是如何构建和构造的,所以你基本上可以选择它。

这是一个例子:

SELECT * FROM TABLE_NAME WHERE (ID=@ID) OR (Country=@Country) OR (State=@State) OR (Region=@Region) OR (City=@City)

如果我会做这个应用程序,我会有两个参数。一种表示用户输入,也就是搜索文本,另一种用于解释 serach 参数是什么。(ID、国家、州、地区或城市?)。

于 2012-06-06T13:28:43.190 回答
0

您必须使用一些逻辑为 TextBox.TextChanged 注册句柄函数以过滤经常发生的查询(例如,键入名称 John 可能会导致 4 个请求:J、Jo、Joh、John)。可以通过使用 System.Threading.Timer 和延迟启动并在用户键入新字符时更改它的开始时间来完成(如果您需要示例 - 询问)。那么我推荐你使用 WCF 服务与 SQL 数据库“对话”。在 WCF 服务上,使用任何 ORM(最简单的实体框架)来查询您的数据库。

于 2012-06-06T14:08:52.037 回答