Foxtable(狐表)用户栏目专家坐堂 → [求助]ListView 大图标分页显示


  共有3656人关注过本帖树形打印复制链接

主题:[求助]ListView 大图标分页显示

帅哥哟,离线,有人找我吗?
yifan3429
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
[求助]ListView 大图标分页显示  发帖心情 Post By:2014/9/17 9:13:00 [只看该作者]

帮助里面是详细的分页显示案例
我需要大图标分页显示  每页显示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()  '模拟单击显示按钮

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/17 9:20:00 [只看该作者]

 那你现在哪里有问题?请做个具体的例子说明。

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2014/9/17 10:25:00 [只看该作者]

点击按钮就死机  分页无效
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:大图标分页.zip


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/17 11:05:00 [只看该作者]

 If pg > 1 Then
    lbl.Text =  pg - 1
Else
    MessageBox.Show("已经到顶了")
End If

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/17 11:06:00 [只看该作者]

If pg < pgs  Then
    lbl.Text = pg + 1
Else
    MessageBox.Show("已经到底了")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By: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':
        不是最特定的。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/17 19:55:00 [只看该作者]

 这段代码不会报这个错。

 回到顶部
帅哥哟,离线,有人找我吗?
yifan3429
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By: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编辑过]

 回到顶部
总数 14 1 2 下一页