感谢园里的大神的讲解。
回调不是非常准确。具体场景是这样的。
WCF服务端提供了分页查询功能,返回结果是List强类型。通常分页还需要返回总记录数,页数。
怎么可以即返回结果集,也可以知道分页相关的记录数量、页数等。
契约定义
IList<UserInfo> GetAlList(UserInfo item);
定义一个pageresult<T>类.里面加个count字段.
你的建议是可以达到这种效果的。
但不想改变类的设计。
IList<UserInfo> GetAlList(UserInfo item,out int count);
这个契约也可以间接实现。可能是太执着,明知不可为而为之吧。
我们的做法是这样的,先用查询语句查出总数,赋值给分页控件,分页控件内部会根据 每页多少计算有多少页,然后触发查询事件,这时候查询出来的数据就是根据分页的数据,至于分页sql怎么写,sql server和oracle都不一样,具体看你用的数据库是什么,这是我们目前的做法,分页控件也是自定义写的
谢谢。这样是分两步实现的。
IList<UserInfo> GetAlList(UserInfo item,out int count);
如果这样的话,可以一步实现。但不是我想要的方式。
@lucika.zh: 我想知道的是你对分页如何设计有了解吗? wcf自带分页查询??还是别人写的方法供你们调用? 如果别人写的你得去问问写的人如何使用,如何你们自己写那就想想办法了
@jqw2009: 可能是我没说明白吧。
分页其实与WCF无关。但怎么返回与WCF有关。分页的实现不用考虑。WCF怎么实现返回我想要的信息?
分页除了需要返回结果集,如list或者datatalbe等,还需要返回总记录数,总页码。
@lucika.zh: 我还是不明白,不考虑分页的实现是什么意思?是说分页功能已经写好了但又不是你们写的,你们却又不知道怎么使用?好像有点奇怪的感觉
@jqw2009: 明白人一看就懂。看下楼 吴瑞祥 定义一个pageresult<T>类.里面加个count字段.
@lucika.zh: 好吧,你随意
@jqw2009: 这是关于 WCF即有返回值,又支持回调的问题。
大神可能直接就会说这是不支持的。变通的方式是有的,如 吴瑞祥 的回复 定义一个pageresult<T>类.里面加个count字段.
或者我定义的这个契约
IList<UserInfo> GetAlList(UserInfo item,out int count);
都可以实现。
只不过不是回调而已。
一次调用全部返回不就行了么?为什么还要使用回调?
需要分页展示的。不能全部加载吧。
显然,你要求WCF方法的返回值中既有分页后的结果集(实体集合),又要有分页信息(记录总数、总页数、当前页面),
但是,你的返回类型 IList<UserInfo> 无法满足这些要求。
所以,设计一个符合你要求的类型代替你现在的返回类型,
才是正道。
吴瑞祥已经告诉你怎么做了。
确实是一个方案。
IList<UserInfo> GetAlList(UserInfo item,out int count);
我是这么做的。有点不大正规。
创建一个类,里面包含数据集合,当前页,总数等等,用这个类做返回值。
谢谢。