以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]ListView 大图标分页显示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57026)

--  作者:yifan3429
--  发布时间:2014/9/17 9:13:00
--  [求助]ListView 大图标分页显示
帮助里面是详细的分页显示案例
我需要大图标分页显示  每页显示20行
感觉自己改的有点乱  关键是没有理解其含义
变通的关键节点位置,

上来求助老师们帮忙


分页显示_AfterLoad

 

Dim st As Date = Date.Now

Forms("稍后窗").Show()

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")

lvw.CheckBoxes = True

systemready = False

lvw.StopRedraw() \'暂停绘制

lvw.Rows.Clear() \'清除原来的行

lvw.Images.Clear() \'清除原来的图片

lvw.View = ViewMode.LargeIcon \'显示模式为大图标

lvw.Images.LargeSize = New Size(180,120) \'定义大图标尺寸

For Each dr As Row In Tables("产品数据库").Rows \'从数据表中提取数据

    Dim Key As String = dr("产品效果图") \'获取此员工的照片文件

    lvw.Images.AddLargeImage(Key,Vars("IP") & Key) \'添加照片,直接用文件名作为图片键值

    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行

    vr.Text = dr("产品编号") & dr("产品名称")   \'设置标题

    vr.ImageKey = Key \'设置图片键值

    vr.Tag = dr

Next

lvw.ResumeRedraw() \'恢复绘制

systemready = True

Forms("稍后窗").Close()

MessageBox.Show("抱歉!让您久等了: " & (Date.Now - st).TotalSeconds & "秒")

 

 

\'

\'Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")

\'trv.BuildTree("产品数据库", "家具风格|家具分类|产品名称")

\'trv.Nodes.Insert("显示所有行",0)

\'

 

Dim lbl As WinForm.Label

lbl = e.Form.Controls("Welcome")

lbl.Text = "今天是" & format(Today,"yyyy年MM月dd日")  & "   天禧家欢迎您!"

 

分页显示_btnShow_Click

 

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")

Dim pg As Integer = e.Form.Controls("Label1").Text

lvw.CheckBoxes = True

systemready = False

Dim idx1 As Integer = (pg - 1) * 20 \'获取要显示的第一行

Dim idx2 As Integer = pg * 20 - 1  \'获取要显示的最末行

idx2 = Math.Min(DataTables(Vars("表A")).dataRows.Count -1,idx2) \'idx2不能超过表的最大行数

For idx As Integer = idx1 To idx2   

lvw.StopRedraw() \'暂停绘制

lvw.Rows.Clear() \'清除原来的行

lvw.Images.Clear() \'清除原来的图片

lvw.View = ViewMode.LargeIcon \'显示模式为大图标

lvw.Images.LargeSize = New Size(150,100) \'定义大图标尺寸

For Each dr As Row In Tables("产品数据库").Rows \'从数据表中提取数据

    Dim Key As String = dr("产品效果图") \'获取此员工的照片文件

    lvw.Images.AddLargeImage(Key,Vars("IP") & Key) \'添加照片,直接用文件名作为图片键值

    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行

    vr.Text = dr("编号备注") & dr("产品名称")   \'设置标题

    vr.ImageKey = Key \'设置图片键值

    vr.Tag = dr

Next

Next

lvw.ResumeRedraw() \'恢复绘制

systemready = True

 

 

分页显示_第一页_Click

 

Dim lbl As WinForm.Label = e.Form.Controls("Label1")

Dim btn As WinForm.Button = e.Form.Controls("btnShow")

Dim pg As Integer = lbl.Text \'当前页号

If pg <> 1 Then

    lbl.Text =  1

End If

btn.PerformClick()  \'模拟单击显示按钮

 

分页显示_上一页_Click

 

Dim lbl As WinForm.Label = e.Form.Controls("Label1")

Dim btn As WinForm.Button = e.Form.Controls("btnShow")

Dim pg As Integer = lbl.Text \'当前页号

If pg > 1 Then

    lbl.Text =  pg - 1

End If

btn.PerformClick()  \'模拟单击显示按钮

 

分页显示_下一页_Click

 

Dim lbl As WinForm.Label = e.Form.Controls("Label1")

Dim btn As WinForm.Button = e.Form.Controls("btnShow")

Dim pg As Integer = lbl.Text \'当前页号

Dim pgs As Integer = math.Ceiling(DataTables(Vars("A")).DataRows.Count / 20) \'计算出总页数

If pg < pgs  Then

    lbl.Text = pg + 1

End If

btn.PerformClick()  \'模拟单击显示按钮

 

 


--  作者:有点甜
--  发布时间:2014/9/17 9:20:00
--  
 那你现在哪里有问题?请做个具体的例子说明。
--  作者:yifan3429
--  发布时间:2014/9/17 10:25:00
--  
点击按钮就死机  分页无效
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:大图标分页.zip


--  作者:有点甜
--  发布时间:2014/9/17 10:33:00
--  

 afterload代码 和 显示按钮的代码

 

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim pg As Integer = e.Form.Controls("Label1").Text
lvw.CheckBoxes = True
systemready = False
Dim idx1 As Integer = (pg - 1) * 5 \'获取要显示的第一行
Dim idx2 As Integer = pg * 5 - 1  \'获取要显示的最末行
idx2 = Math.Min(DataTables(Vars("表A")).dataRows.Count -1,idx2) \'idx2不能超过表的最大行数

lvw.StopRedraw() \'暂停绘制
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.LargeIcon \'显示模式为大图标
lvw.Images.LargeSize = New Size(150,100) \'定义大图标尺寸
For idx As Integer = idx1 To idx2
    Dim dr As Row = Tables(Vars("表A")).Rows(idx)
    Dim Key As String = dr("图片") \'获取此员工的照片文件
    lvw.Images.AddLargeImage(Key,Vars("IP") & Key) \'添加照片,直接用文件名作为图片键值
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    vr.Text = dr("第一列") & dr("图片")   \'设置标题
    vr.ImageKey = Key \'设置图片键值
    vr.Tag = dr
Next
lvw.ResumeRedraw() \'恢复绘制
systemready = True


--  作者:yifan3429
--  发布时间:2014/9/17 11:01:00
--  

分页显示_上一页_Click

 

Dim lbl As WinForm.Label = e.Form.Controls("Label1")

Dim btn As WinForm.Button = e.Form.Controls("btnShow")

Dim pg As Integer = lbl.Text \'当前页号

If pg > 1 Then

    lbl.Text =  pg - 1

End If

btn.PerformClick()  \'模拟单击显示按钮

怎样判断  到顶了

MessageBox.Show("已经到顶了")

 

分页显示_下一页_Click

 

Dim lbl As WinForm.Label = e.Form.Controls("Label1")

Dim btn As WinForm.Button = e.Form.Controls("btnShow")

Dim pg As Integer = lbl.Text \'当前页号

Dim pgs As Integer = math.Ceiling(DataTables(Vars("A")).DataRows.Count / 20) \'计算出总页数

If pg < pgs  Then

    lbl.Text = pg + 1

End If

btn.PerformClick()  \'模拟单击显示按钮

怎样判断  到底没有了

MessageBox.Show("已经到底了")



[此贴子已经被作者于2014-9-17 11:01:17编辑过]

--  作者:有点甜
--  发布时间:2014/9/17 11:05:00
--  
 If pg > 1 Then
    lbl.Text =  pg - 1
Else
    MessageBox.Show("已经到顶了")
End If

 


--  作者:有点甜
--  发布时间:2014/9/17 11:06:00
--  
If pg < pgs  Then
    lbl.Text = pg + 1
Else
    MessageBox.Show("已经到底了")
End If

--  作者:yifan3429
--  发布时间:2014/9/17 19:52:00
--  
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim pg As Integer = e.Form.Controls("Label1").Text
lvw.CheckBoxes = True
systemready = False
Dim idx1 As Integer = (pg - 1) * 15\'获取要显示的第一行
Dim idx2 As Integer = pg * 15 - 1  \'获取要显示的最末行
idx2 = Math.Min(DataTables(Vars("表A")).dataRows.Count -1,idx2) \'idx2不能超过表的最大行数
lvw.StopRedraw() \'暂停绘制
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.LargeIcon \'显示模式为大图标
lvw.Images.LargeSize = New Size(220,150) \'定义大图标尺寸
For idx As Integer = idx1 To idx2
    Dim dr As Row = Tables(Vars("表A")).Rows(idx)
    Dim Key As String = dr("产品效果图") \'获取此员工的照片文件
    lvw.Images.AddLargeImage(Key,Vars("IP") & Key) \'添加照片,直接用文件名作为图片键值
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    vr.Text = dr("产品编号") & dr("产品名称")   \'设置标题
    vr.ImageKey = Key \'设置图片键值
    vr.Tag = dr
Next
lvw.ResumeRedraw() \'恢复绘制
systemready = True




重载决策失败,因为没有最适合这些参数的 Public“Item”: 
    \'Public ReadOnly Property Item(Index As Integer) As Foxtable.DataTable\':
        不是最特定的。
    \'Public ReadOnly Property Item(TableName As String) As Foxtable.DataTable\':
        不是最特定的。

--  作者:有点甜
--  发布时间:2014/9/17 19:55:00
--  
 这段代码不会报这个错。
--  作者:yifan3429
--  发布时间:2014/9/17 20:01:00
--  
系统启动时会出现  启动后就不会了  
原因  该是  启动时需要的数据没有加载  而造成的
删除错误窗  继续不影响  就是没有按照预定的加载第一页

点击按钮就会出现数据  影响操作

Dim lbl As WinForm.Label
lbl = e.Form.Controls("Welcome")
lbl.Text = "今天是" & format(Today,"yyyy年MM月dd日")  & "   天禧家欢迎您!"

\'-------------------------------------------------
If User.Name <> "皮新华" Then
    e.Form.Controls("Button14").Visible = False
Else
    e.Form.Controls("Button14").Visible = True
End If
\'----------------------------------------------------

Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer2")
sp.Panel1.Collapsed = True
Dim sp1 As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")
sp1.Panel1.Collapsed = True

\'-----------------------------------------------------------
Forms("稍后窗").Show
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim pg As Integer = e.Form.Controls("Label1").Text
lvw.CheckBoxes = True
systemready = False
Dim idx1 As Integer = (pg - 1) * 15\'获取要显示的第一行
Dim idx2 As Integer = pg * 15 - 1  \'获取要显示的最末行
idx2 = Math.Min(DataTables(Vars("表A")).dataRows.Count -1,idx2) \'idx2不能超过表的最大行数
lvw.StopRedraw() \'暂停绘制
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.LargeIcon \'显示模式为大图标
lvw.Images.LargeSize = New Size(220,150) \'定义大图标尺寸
For idx As Integer = idx1 To idx2
    Dim dr As Row = Tables(Vars("表A")).Rows(idx)
    Dim Key As String = dr("产品效果图") \'获取此员工的照片文件
    lvw.Images.AddLargeImage(Key,Vars("IP") & Key) \'添加照片,直接用文件名作为图片键值
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    vr.Text = dr("产品编号") & dr("产品名称")   \'设置标题
    vr.ImageKey = Key \'设置图片键值
    vr.Tag = dr
Next
lvw.ResumeRedraw() \'恢复绘制
systemready = True
e.Form.Controls("btnShow").PerformClick \'模拟单击显示按钮,显示第一页数据
Forms("稍后窗").Close

\'------------------------------------------------------------------------


AfterLoad全部代码  是不是有冲突啊




如果是在设计窗口预览时没有错误出出现的

[此贴子已经被作者于2014-9-17 20:04:40编辑过]