none
webservice 怎样分页传送一个数据量较大的Dataset? RRS feed

答案

  • 要么你返回一个datatable 数组  要么你的查询分段


    比如说   
    <webmethod()>
    datatable[]   getdata()
    {


    }
    把原来的一个table 拆成若干的table   一个 for 应该就能做到



    或者 


    <webmethod()>
    datatable   getdata(int page)
    {


    }















    工作突然有点忙 嘿嘿
    • 已标记为答案 Dodu.NET 2009年5月5日 1:02
    2009年4月30日 3:09
  • 的确一样数据量很大  呵呵     所以要看你的问题出在哪里  是单一table过大  还是总数过大


    客户段不知道有多少段的话   你可以做成这样

    <webmethod()>
    datatable   getdata(int page,out int total)
    {


    }


     要看你灵活掌握了:D

    工作突然有点忙 嘿嘿
    • 已标记为答案 Dodu.NET 2009年5月5日 1:02
    2009年4月30日 5:19
  • 你可以试试,DataAdapter.Fill(dataset, startindex, maxcount, "tablename") 方法,只要记得每次 Fill 时使用的索引就好了,如每次取1000条
    第一次 Fill(dataset, 0, 1000, 'xxx')
    第二次 Fill(dataset, 1000, 1000, 'xxx')
    第三次 Fill(dataset, 2000, 1000, 'xxx')
    .....

    知识改变命运,奋斗成就人生!
    • 已标记为答案 Dodu.NET 2009年5月5日 1:02
    2009年4月30日 9:58
    版主
  • 另外一个方法还可以使用压缩传输的方法
    参见
    http://www.dotblogs.com.tw/jeff-yeh/archive/2008/04/16/2932.aspx
    【孟子E章】
    • 已标记为答案 Dodu.NET 2009年5月5日 1:02
    2009年5月3日 10:01
    版主

全部回复

  • 要么你返回一个datatable 数组  要么你的查询分段


    比如说   
    <webmethod()>
    datatable[]   getdata()
    {


    }
    把原来的一个table 拆成若干的table   一个 for 应该就能做到



    或者 


    <webmethod()>
    datatable   getdata(int page)
    {


    }















    工作突然有点忙 嘿嘿
    • 已标记为答案 Dodu.NET 2009年5月5日 1:02
    2009年4月30日 3:09
  • 韦恩卑鄙,看了你的回答,我还是有些疑惑:
    返回的 datatable 数组 不是一样数据量很大吗?
    查询分段的情况下, 客户端怎么知道有多少段呢?
    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/
    2009年4月30日 4:28
  • 的确一样数据量很大  呵呵     所以要看你的问题出在哪里  是单一table过大  还是总数过大


    客户段不知道有多少段的话   你可以做成这样

    <webmethod()>
    datatable   getdata(int page,out int total)
    {


    }


     要看你灵活掌握了:D

    工作突然有点忙 嘿嘿
    • 已标记为答案 Dodu.NET 2009年5月5日 1:02
    2009年4月30日 5:19
  • 你可以试试,DataAdapter.Fill(dataset, startindex, maxcount, "tablename") 方法,只要记得每次 Fill 时使用的索引就好了,如每次取1000条
    第一次 Fill(dataset, 0, 1000, 'xxx')
    第二次 Fill(dataset, 1000, 1000, 'xxx')
    第三次 Fill(dataset, 2000, 1000, 'xxx')
    .....

    知识改变命运,奋斗成就人生!
    • 已标记为答案 Dodu.NET 2009年5月5日 1:02
    2009年4月30日 9:58
    版主
  • 你可以试试,DataAdapter.Fill(dataset, startindex, maxcount, "tablename") 方法,只要记得每次 Fill 时使用的索引就好了,如每次取1000条
    第一次 Fill(dataset, 0, 1000, 'xxx')
    第二次 Fill(dataset, 1000, 1000, 'xxx')
    第三次 Fill(dataset, 2000, 1000, 'xxx')
    .....

    知识改变命运,奋斗成就人生!

    那客户端是不是需要知道总记录数,而且还需要通知服务器,每次传多少条记录,最后还需要汇总到一个表中(这点我也不知道怎么汇总到一个表中).
    我觉得应该这样,就是觉得是有些麻烦,总感觉应该还有更简单的办法.
    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/
    2009年5月2日 9:15
  • 客户端当然不需要记录这些内容,这些是由服务端记录的,客户端只需要向服务端传一个唯的 Guid 来保证数据是一套数据
    知识改变命运,奋斗成就人生!
    2009年5月2日 16:03
    版主
  • 另外一个方法还可以使用压缩传输的方法
    参见
    http://www.dotblogs.com.tw/jeff-yeh/archive/2008/04/16/2932.aspx
    【孟子E章】
    • 已标记为答案 Dodu.NET 2009年5月5日 1:02
    2009年5月3日 10:01
    版主