佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1245|回复: 10

VB ListView VS GridView

[复制链接]
发表于 2-1-2007 03:12 PM | 显示全部楼层 |阅读模式
VB6 和 VB2005 的 ListView & GridView 有什么分别?
什么场合下比较适合用 ListView (和 GridView)?

我在 VB6 都是用 ListView,因为觉得 VB6 的 ListView 和 GridView 没多大分别
不过在 VB2005 看到 GridView 可以像 Excel 般在  table 直接修改,做法比 VB6 简单很多
不懂 ListView 可以不可以?

在 VB6 的 ListView 我可以做到酱,不过是移动 textbox 到 ListView,要用到 API,比较多 coding
VB6 GridView 的做法也是一样,不过就比较简单一点,不用动用到 API
(可能有更简单的方法,只是我不会)

我比较喜欢用 ListView 因为可以 format data。
GridView 的 data 可以 format 的吗?
回复

使用道具 举报


ADVERTISEMENT

发表于 2-1-2007 08:36 PM | 显示全部楼层
原帖由 hooi1983 于 2-1-2007 03:12 PM 发表
VB6 和 VB2005 的 ListView & GridView 有什么分别?
什么场合下比较适合用 ListView (和 GridView)?

我在 VB6 都是用 ListView,因为觉得 VB6 的 ListView 和 GridView 没多大分别
不过在 VB2005 看到 ...


可以教我怎样用listview吗?
回复

使用道具 举报

 楼主| 发表于 3-1-2007 01:41 PM | 显示全部楼层
原帖由 城之内 于 2-1-2007 08:36 PM 发表


可以教我怎样用listview吗?


你要用 VB6 还是 .Net?
回复

使用道具 举报

发表于 3-1-2007 09:21 PM | 显示全部楼层
原帖由 hooi1983 于 3-1-2007 01:41 PM 发表


你要用 VB6 还是 .Net?


VB6。我找了网上的sample可是看不懂。我想知道它是怎样从database放资料去listview,然后怎样加checkbox.
回复

使用道具 举报

 楼主| 发表于 4-1-2007 12:16 PM | 显示全部楼层
Step 1: 将 ListView component 加到 VB tools
去 Projects -> Components -> Controls 打勾 Microsoft Windows Conmmon Controls 6.0
接下来会看到在左边的 tools 有 ListView
把它放在你的 Form,然后取一个名字 lvwXXXX

Step 2: 设定 ListView
去 coding 那儿,在 form load event assign 你的 ListView
  1. Private Sub Form_Load()

  2.   With Me.lvwMain

  3.     .MultiSelect = False

  4.     .FullRowSelect = True

  5.     .GridLines = True

  6.     .LabelEdit = lvwManual

  7.     .View = lvwReport

  8.   End With


  9.   BindListView
  10.   LoadListView

  11. End Sub
复制代码

如果要加 check box 就 set lvwMain.Checkboxes=True
BindListView 是设定 ListView 的 ColumnHeaders
LoadListView 是从 database 拿 data 放进 ListView

Step 3: 设定 ListView 的 ColumnHeaders
  1. Private Sub BindListView()

  2.   With Me.lvwMain

  3.     .ColumnHeaders.Clear

  4.     .ColumnHeaders.Add , , "No", 600

  5.     .ColumnHeaders.Add , , "Code", 1000

  6.     .ColumnHeaders.Add , , "Name", 2000

  7.     .ColumnHeaders.Add , , "Tel", 1500

  8.     .ColumnHeaders.Add , , "PV", 1000, 1

  9.   End With

  10. End Sub
复制代码


Step 4: 从 database 放 data 进 ListView
  1. Private Sub LoadListView()

  2.   Dim objListItem As ListItem '用这个会比较方便

  3.   Dim i As Integer

  4.   i = 1

  5.   

  6.   Me.lvwMain.ListItems.Clear



  7.   RS.Open "usp_select_customers" '和 SELECT statement 一样,只不过这是用 stored procedure



  8.   While Not RS.EOF

  9.     Set objListItem = Me.lvwMain.ListItems.Add(, , i)

  10.     objListItem.SubItems(1) = RS("customer_no")

  11.     objListItem.SubItems(2) = RS("customer_name")

  12.     objListItem.SubItems(3) = RS("customer_phone_no")

  13.     objListItem.SubItems(4) = RS("customer_pv")

  14.     objListItem.Tag = RS("customer_id")

  15.     i = i + 1

  16.     RS.MoveNext

  17.   Wend



  18.   Set objListItem = Nothing

  19.   RS.Close

  20. End Sub
复制代码


Step 5: 从 Double Click ListView event 拿到 ID
  1. Private Sub lvwMain_DblClick()

  2.   If Me.lvwMain.ListItems.Count < 1 Then Exit Sub

  3.   Field_ID = Me.lvwMain.ListItems(Me.lvwMain.SelectedItem.Index).Tag

  4. End Sub
复制代码


CheckBox 的 ListView 多了 ItemCheck 的 event。例如
  1. Private Sub lvwMain_ItemCheck(ByVal Item As MSComctlLib.ListItem)

  2.   'checked 后要 update 什么

  3. End Sub
复制代码


ListView 如果当按 ColumnHeader 时要 sort data 就加
  1. Private Sub lvwMain_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

  2.   With lvwMain

  3.     .Sorted = True

  4.     .SortKey = ColumnHeader.Index - 1

  5.     .SortOrder = IIf(blnSort, lvwAscending, lvwDescending) 'blnSort 用来决定顺序和逆序

  6.     blnSort = IIf(blnSort, 0, 1)

  7.     .Sorted = False

  8.   End With

  9. End Sub
复制代码


* 此 Sort 法适合用在 string 而已。如果 sort integer/float 或 date 将会照着 string 的排法来 sort,所以如果 sort integer/float 或 date 就要写 procedure

* 如果要将 ColumnHeader 弄成不能 click 就要用到 API
回复

使用道具 举报

发表于 4-1-2007 08:20 PM | 显示全部楼层
原帖由 hooi1983 于 4-1-2007 12:16 PM 发表
Step 1: 将 ListView component 加到 VB tools
去 Projects -> Components -> Controls 打勾 Microsoft Windows Conmmon Controls 6.0
接下来会看到在左边的 tools 有 ListView
把它放在你的 Form,然 ...


谢谢你!如果有什么不明白我可以问你吗?对不起哦,你开的帖还要麻烦你。。。
回复

使用道具 举报

Follow Us
 楼主| 发表于 4-1-2007 09:55 PM | 显示全部楼层
原帖由 <i>城之内</i> 于 4-1-2007 08:20 PM 发表<br />

<br />

<br />
谢谢你!如果有什么不明白我可以问你吗?对不起哦,你开的帖还要麻烦你。。。
<br />

不用客气
回复

使用道具 举报

发表于 5-1-2007 11:21 AM | 显示全部楼层

回复 #7 hooi1983 的帖子

请问 objListItem.Tag = RS("customer_id") 是要来做什么的?

有办法做一个一半checkbox一半没checkbox的吗?

怎样format data?

[ 本帖最后由 城之内 于 5-1-2007 11:35 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 5-1-2007 11:04 PM | 显示全部楼层
我用 ListView 的 Tag 来收 record 的 ID
当我选 ListItem 的时候,拿它的 Tag 就可拿到 record 的 ID

如果你要 list 的 data 是 currency,就用 FormatNumber(rs("Price"),2)
那就会 show 1.00, 1.23, 56.78 ...后面会有两个小数点
我不懂这称为 Format Data 吗?

一半 checkbox 我就不会了
回复

使用道具 举报

发表于 6-1-2007 01:28 PM | 显示全部楼层
* 如果要将 ColumnHeader 弄成不能 click 就要用到 API

可以將 ListView.HeaderStyle 設成 NonClickable

GridView 的 data 可以 format 的吗?

用.NET 2.0新的DataGridView (不是DataGrid),有多樣化的format選項。

[ 本帖最后由 fxam 于 6-1-2007 01:32 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 6-1-2007 07:33 PM | 显示全部楼层
原帖由 fxam 于 6-1-2007 01:28 PM 发表

可以將 ListView.HeaderStyle 設成 NonClickable


以上那个 ListView 是 VB6 的,没有 ListView.HeaderStyle

原帖由 城之内 于 3-1-2007 09:21 PM 发表

[quote]原帖由 hooi1983 于 3-1-2007 01:41 PM 发表

你要用 VB6 还是 .Net?


VB6。我找了网上的sample可是看不懂。我想知道它是怎样从database放资料去listview,然后怎样加checkbox.
[/quote]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-11-2024 09:06 PM , Processed in 0.119792 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表