【问题标题】:Search function for Windows Phone appWindows Phone 应用程序的搜索功能
【发布时间】:2012-06-06 12:53:15
【问题描述】:

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

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

我的 SQL 是用 ID、Country、State、Region、City(以及一些与搜索功能无关的表)构建的。

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

谢谢你;-)

【问题讨论】:

    标签: visual-studio-2010 windows-phone-7 silverlight-4.0 httpwebrequest windows-phone-7.1


    【解决方案1】:

    首先我必须通知您,通过未使用无线网络的智能手机获取超过 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、国家、州、地区或城市?)。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多