我知道这是一个古老的问题,但这是我的情景
这是在C#2.0
拥有一个具有datagridview控件的Windows应用程序。这需要通过进行Web服务调用来填充。
如果我使用直接连接并且使用数据集,我想在数据上实现相同的功能,例如分页和对返回的数据应用过滤器。我知道返回数据集是一个坏主意,我希望找到一个好的解决方案。
答案 0 :(得分:1)
我可能会在VS2008 SP1中查看ADO.NET Data Services,即Astoria。
这允许您通过Web服务公开数据(WCF暴露ATOM,IIRC) - 但您不需要知道所有这些细节:工具为您担心:您只需获得常规IQueryable< T>数据上下文的来源(与LINQ-to-SQL数据上下文不同,但概念相同)。
这里的好处是LINQ查询(例如过滤(Where),分页(Skip / Take)等)可以从客户端所有组成到< / em> Web服务,以及支持LINQ的数据存储(LINQ-to-SQL或Entity Framework等)。所以只有正确的数据来自网络:如果你要求按名称排序的前10行(20000),那就是你得到的:数据库中有10行;电线上有10排,没有杂乱。
答案 1 :(得分:1)
编写一个保存数据的自定义类(MyDataItem)。然后,您可以传递List<MyDataItem>
或MyDataItem的一些集合并绑定到您的网格。
您需要实施分页,过滤等。
答案 2 :(得分:1)
如果您正在浏览Web服务数据层,则无法获得使用DataSet自动获取的绑定行为。您必须创建自己的代理类,该类支持所有数据绑定功能,并通过Web服务调用保留它们。根据应用程序的环境,您可能希望批量修改以避免过多的Web服务往返。
答案 3 :(得分:0)
fallen888没错 - 你需要创建一个List或DataTable的集合类,用webservice数据流的输出填充它,并自己处理分页和过滤。