以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自定义加载树翻页出现重复数据的问题!!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52095)

--  作者:身份不明
--  发布时间:2014/6/9 10:21:00
--  自定义加载树翻页出现重复数据的问题!!


图片点击可在新窗口打开查看此主题相关图片如下:kucun.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:chukumingxi.jpg
图片点击可在新窗口打开查看
以上是库存中一个产品的出库数量,和出库的明细!

但是看下图,我切换到出库界面,通过自定义加载树查询出库信息的时候,从第2,3,4页都显示同样的页面,一直到第5页才更新数据。

这是为什么啊?


--  作者:身份不明
--  发布时间:2014/6/9 10:21:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看

--  作者:身份不明
--  发布时间:2014/6/9 10:23:00
--  
虽然出库里切换了3页都显示同样的数据,但是库存里统计数据的时候还是准确的。
--  作者:有点甜
--  发布时间:2014/6/9 10:28:00
--  
 回复楼上,不明所指,重复,可能是你数据库的数据有重复了,跟分页加载有什么关系?
--  作者:身份不明
--  发布时间:2014/6/9 13:15:00
--  

仔细核对了,数据库里没有重复的数据。请仔细看上面的图片,我是从第2页一直到第4页,数据没有改变啊,可是数据库里并没有重复。点分页加载的下一页,并不加载数据。


--  作者:有点甜
--  发布时间:2014/6/9 13:44:00
--  
以下是引用身份不明在2014-6-9 13:15:00的发言:

仔细核对了,数据库里没有重复的数据。请仔细看上面的图片,我是从第2页一直到第4页,数据没有改变啊,可是数据库里并没有重复。点分页加载的下一页,并不加载数据。

 

做个例子发上来,可能是代码写错了。


--  作者:身份不明
--  发布时间:2014/6/9 15:40:00
--  

窗口afterload事件:

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT Year(出库日期) As 年, Month(出库日期) As 月, 领料班组 From {辅材出库管理}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt,"年|月|领料班组")
trv.Nodes.Insert("加载所有数据",0)

\'加载第一页数据
With DataTables("辅材出库管理")
    .LoadFilter = "" \'清除加载条件
    .LoadPage = 0 \'加载第一页
    .LoadTop = 10 \'每页10行
    .Load()
    e.Form.Controls("TextBox1").Value = 1 & "/" & .TotalPages
End With

 

记载树的NodeMouseClick:

Dim Filter As String

If e.Node.Text = "加载所有数据" Then
    Filter = ""
Else 
    Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的行
    Dim Year As Integer = dr("年")
    Dim Month As Integer = dr("月")
    Dim Product As String = dr("领料班组")
    Select Case e.Node.Level
        Case 0
            Filter ="Year(出库日期) = " & Year
        Case 1
            Filter ="Year(出库日期) = " & Year & " And Month(出库日期) = " & Month
        Case 2
            Filter ="Year(出库日期) = " & Year & " And Month(出库日期) = " & Month & " And 领料班组 = \'" & Product & "\'"
    End Select
End If

With DataTables("辅材出库管理")
    .LoadFilter = Filter
    .LoadPage = 0
    .LoadTop = 10
    .Load()
    e.Form.Controls("TextBox1").Value = 1 & "/" & .TotalPages
End With

 

下一页代码:

With DataTables("辅材出库管理")
    If .LoadPage < .TotalPages - 1
        .LoadPage = .LoadPage  + 1
        .Load()
        e.Form.Controls("TextBox1").Value = (.LoadPage + 1) & "/" & .TotalPages
    End If
End With


--  作者:Bin
--  发布时间:2014/6/9 15:44:00
--  
能把例子发上来方便测试分析一下,才能便于找到问题.
--  作者:有点甜
--  发布时间:2014/6/9 15:44:00
--  
 把项目传上来,代码应该没错。
--  作者:身份不明
--  发布时间:2014/6/9 15:57:00
--  

用的是SQL数据库,而且是局域网的,传不上去啊!