找回密码
 立即注册

QQ登录

只需一步,快速开始

ken6412

银牌会员

1

主题

11

帖子

2777

积分

银牌会员

积分
2777

活字格认证

最新发帖

[已处理] 分頁問題

ken6412
银牌会员   /  发表于:2013-7-22 22:56  /   查看:15263  /  回复:22
請問,
如果將FpSpread之屬性設為以下
AllowLoadOnDemand = True
ActiveSheetView.PageSize = 100
ActiveSheetView.LoadOnDemandMode = true
ActiveSheetView.AllowVirtualScrollPaging = True
ActiveSheetView.LoadOnDemandTriggerMode = FarPoint.Web.Spread.LoadOnDemandTriggerMode.OffsetBased
當Scroll到需要載入另一頁資料的地方時, 是否有辦法可以保留上一頁的資料呢?

另外, 捲動後, 在資料Binding前, 有沒有辦法事先取得捲動後即將顯示的頁數呢?

22 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-7-23 14:13:00
沙发
回复 1楼ken6412的帖子

1.默认情况下,可以保留上一页的数据。在您那边取不到吗?

2.没明白您的意思,能否详细解释下您的 Case?
回复 使用道具 举报
ken6412
银牌会员   /  发表于:2013-7-23 19:30:00
板凳
目前我這邊的狀況是這樣子的,
如果PageSize設為50,
當Scroll到50的位置時,
可能會產生2種結果,
當第50筆資料在Spread中較為靠上時,
會直接從101開始顯示50筆(跳到第3頁去了),
而之前的資料(1~50)都沒有了,
都是空白, 要重新載入,

而第50筆資料在表格內偏下時,
則會顯示51~100筆資料,
先前的1~50筆,一樣不見了
如往上捲動時, 1~50筆一樣是空白要重新載入
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-7-24 10:06:00
地板
回复 3楼ken6412的帖子

ken6412 你好,

感谢你的问题反馈,能否把你的测试 Demo 发到论坛查看,我协助处理?

或者是脱离你现在使用的场景,生成 100 条数据,绑定给 Spread,看还是否会出现这个问题?
回复 使用道具 举报
ken6412
银牌会员   /  发表于:2013-7-24 12:42:00
5#
我修改了一下測試的檔案,
煩請代為測試一下,謝謝!

test.zip

1.26 KB, 下载次数: 1458

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-7-24 17:53:00
6#
回复 5楼ken6412的帖子

ken6412 你好,

感谢问题反馈。

问题我已经重现了。在这个例子中竖直滚动条的长度是根据数据量来决定的,这也就是为什么你觉得“50”行位置不同加载数据不一致的原因。

至于空白现象,也是 Spread 的设计,加载另一页的内容需要重现渲染到表格中。

楼主想实现什么样的功能呢?
回复 使用道具 举报
ken6412
银牌会员   /  发表于:2013-7-24 22:42:00
7#
我知道長度是由數據量來決定的,
所以在測試時, 我是點滾動條下面的箭頭來滾動資料,
一般來說, 這種方式應該是以每次最小移動單位向下滾動,
所以, 理論上, 只要向下滾動且在畫面上還能看見第50筆時,
加載的數據應該只能是51~100筆, 不該有跳到從101筆加載的情形,
這樣容易造成使用者的誤解(以為51~100不見了)

至於我這邊原本想實現的功能是,
在自動加載下一頁的資料時,
如果上一頁的資料還在畫面上,
(例如畫面上是第2頁, 自動要加載第3頁)
這時能夠保留上一頁的資料,
並將加載的資料接續在下面,
以避免小幅度滾動時,
資料位置會一直跳的問題!

在目前的FpSpread中,
如果是向下滾動時,
情況還算正常,
但如果是向上滾動時,
情況就不太理想了,
如果1頁100筆,
由101筆向上滾動1點點,
資料重新加載後,
資料顯示位置就跑到第1筆去了,
這樣要看到分頁前(ex 第100筆)的資料時,
還必須再從第一筆往下拉,
一般使用者可能會對此有意見,
所以想詢問有無解決之道?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-7-25 10:11:00
8#
回复 7楼ken6412的帖子

尝试下这段代码,看是否满足你的case?

  1.   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.         Dim i As Integer, j As Integer
  3.         Dim dt As DataTable = New DataTable
  4.         For i = 1 To 10
  5.             dt.Columns.Add(Chr(64 + i))
  6.         Next
  7.         For i = 1 To 500
  8.             Dim dr As DataRow = dt.NewRow()
  9.             For j = 1 To 10
  10.                 dr.Item(j - 1) = Format(i, "000") & "-" & Format(j, "000")
  11.             Next
  12.             dt.Rows.Add(dr)
  13.         Next
  14.       
  15.         'With FpSpread1
  16.         '    .AllowLoadOnDemand = True
  17.         '    .LoadInitRowCount = 50
  18.         '    .LoadRowIncrement = 50
  19.         'End With
  20.         'With FpSpread1.ActiveSheetView
  21.         '    .AllowPage = False
  22.         '    .AllowLoadOnDemand = True

  23.         '    '.AllowLoadOnDemand = True
  24.         '    '.AllowVirtualScrollPaging = True
  25.         '    '.LoadInitRowCount = 50
  26.         '    '.LoadOnDemandMode = FarPoint.Web.Spread.LoadOnDemandMode.Standard
  27.         '    .LoadOnDemandTriggerMode = FarPoint.Web.Spread.LoadOnDemandTriggerMode.OffsetBased
  28.         '    '.LoadRowIncrement = 50
  29.         '    '.OperationMode = FarPoint.Web.Spread.OperationMode.RowMode
  30.         '    '.PageSize = 50
  31.         'End With
  32.         FpSpread1.DataSource = dt

  33.         FpSpread1.ActiveSheetView.PageSize = 200
  34.         FpSpread1.AllowLoadOnDemand = True
  35.         FpSpread1.LoadInitRowCount = 50
  36.         FpSpread1.LoadRowIncrement = 50
  37.         FpSpread1.ActiveSheetView.AllowPage = False
  38.     End Sub
复制代码
回复 使用道具 举报
ken6412
银牌会员   /  发表于:2013-7-25 10:49:00
9#
您提供的代碼我剛剛測試過了,
基本上似乎只是將分頁筆數提高至200,
每次載入50筆,
在僅看第50筆的狀況下是沒有問題,
但它問題好像並沒有解決.
只是將發生問題的位置從50筆變成第200筆,
而且,由於FpSpread1.ActiveSheetView.AllowPage = False
造成滾動至第200筆後, 後面的資料就無法經由滾動顯示出來了!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-7-25 12:23:00
10#
回复 9楼ken6412的帖子

如果你把 PageSize 改变成 500 (即和数据源行数相同),能否解决问题呢?
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部