首页 新闻 搜索 专区 学院

WCF 分页回调

0
悬赏园豆:30 [已解决问题] 解决于 2017-09-14 13:40

感谢园里的大神的讲解。

回调不是非常准确。具体场景是这样的。

WCF服务端提供了分页查询功能,返回结果是List强类型。通常分页还需要返回总记录数,页数。

怎么可以即返回结果集,也可以知道分页相关的记录数量、页数等。

契约定义

IList<UserInfo> GetAlList(UserInfo item);
lucika.zh的主页 lucika.zh | 初学一级 | 园豆:59
提问于:2017-09-14 08:43
< >
分享
最佳答案
0

定义一个pageresult<T>类.里面加个count字段.

收获园豆:30
吴瑞祥 | 高人七级 |园豆:28820 | 2017-09-14 09:23

你的建议是可以达到这种效果的。

但不想改变类的设计。

IList<UserInfo> GetAlList(UserInfo item,out int count);

这个契约也可以间接实现。可能是太执着,明知不可为而为之吧。

lucika.zh | 园豆:59 (初学一级) | 2017-09-14 10:04
其他回答(4)
0

 我们的做法是这样的,先用查询语句查出总数,赋值给分页控件,分页控件内部会根据 每页多少计算有多少页,然后触发查询事件,这时候查询出来的数据就是根据分页的数据,至于分页sql怎么写,sql server和oracle都不一样,具体看你用的数据库是什么,这是我们目前的做法,分页控件也是自定义写的

jqw2009 | 园豆:1946 (小虾三级) | 2017-09-14 09:01

谢谢。这样是分两步实现的。

IList<UserInfo> GetAlList(UserInfo item,out int count);

如果这样的话,可以一步实现。但不是我想要的方式。

支持(0) 反对(0) lucika.zh | 园豆:59 (初学一级) | 2017-09-14 09:04

@lucika.zh: 我想知道的是你对分页如何设计有了解吗? wcf自带分页查询??还是别人写的方法供你们调用? 如果别人写的你得去问问写的人如何使用,如何你们自己写那就想想办法了

支持(0) 反对(0) jqw2009 | 园豆:1946 (小虾三级) | 2017-09-14 09:06

@jqw2009: 可能是我没说明白吧。

分页其实与WCF无关。但怎么返回与WCF有关。分页的实现不用考虑。WCF怎么实现返回我想要的信息?

分页除了需要返回结果集,如list或者datatalbe等,还需要返回总记录数,总页码。

支持(0) 反对(0) lucika.zh | 园豆:59 (初学一级) | 2017-09-14 09:13

@lucika.zh: 我还是不明白,不考虑分页的实现是什么意思?是说分页功能已经写好了但又不是你们写的,你们却又不知道怎么使用?好像有点奇怪的感觉

支持(0) 反对(0) jqw2009 | 园豆:1946 (小虾三级) | 2017-09-14 09:15

@jqw2009: 明白人一看就懂。看下楼  吴瑞祥   定义一个pageresult<T>类.里面加个count字段.

支持(0) 反对(0) lucika.zh | 园豆:59 (初学一级) | 2017-09-14 09:52

@lucika.zh: 好吧,你随意

支持(0) 反对(0) jqw2009 | 园豆:1946 (小虾三级) | 2017-09-14 09:53

@jqw2009: 这是关于   WCF即有返回值,又支持回调的问题。

大神可能直接就会说这是不支持的。变通的方式是有的,如  吴瑞祥  的回复 定义一个pageresult<T>类.里面加个count字段.

或者我定义的这个契约

IList<UserInfo> GetAlList(UserInfo item,out int count);

都可以实现。

只不过不是回调而已。

支持(0) 反对(0) lucika.zh | 园豆:59 (初学一级) | 2017-09-14 09:56
0

一次调用全部返回不就行了么?为什么还要使用回调?

Daniel Cai | 园豆:10374 (专家六级) | 2017-09-14 09:10

需要分页展示的。不能全部加载吧。

支持(0) 反对(0) lucika.zh | 园豆:59 (初学一级) | 2017-09-14 09:13
0

显然,你要求WCF方法的返回值中既有分页后的结果集(实体集合),又要有分页信息(记录总数、总页数、当前页面),

但是,你的返回类型 IList<UserInfo> 无法满足这些要求。

所以,设计一个符合你要求的类型代替你现在的返回类型,

才是正道。

 

吴瑞祥已经告诉你怎么做了。

西漠以西 | 园豆:1670 (小虾三级) | 2017-09-14 10:22

确实是一个方案。

IList<UserInfo> GetAlList(UserInfo item,out int count);

我是这么做的。有点不大正规。

支持(0) 反对(0) lucika.zh | 园豆:59 (初学一级) | 2017-09-14 11:21
0

创建一个类,里面包含数据集合,当前页,总数等等,用这个类做返回值。

花飘水流兮 | 园豆:11008 (专家六级) | 2017-09-14 12:27

谢谢。

支持(0) 反对(0) lucika.zh | 园豆:59 (初学一级) | 2017-09-14 13:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册