查看: 1245|回复: 10
|
VB ListView VS GridView
[复制链接]
|
|
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 的吗? |
|
|
|
|
|
|
|
发表于 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
- Private Sub Form_Load()
- With Me.lvwMain
- .MultiSelect = False
- .FullRowSelect = True
- .GridLines = True
- .LabelEdit = lvwManual
- .View = lvwReport
- End With
- BindListView
- LoadListView
- End Sub
复制代码
如果要加 check box 就 set lvwMain.Checkboxes=True
BindListView 是设定 ListView 的 ColumnHeaders
LoadListView 是从 database 拿 data 放进 ListView
Step 3: 设定 ListView 的 ColumnHeaders
- Private Sub BindListView()
- With Me.lvwMain
- .ColumnHeaders.Clear
- .ColumnHeaders.Add , , "No", 600
- .ColumnHeaders.Add , , "Code", 1000
- .ColumnHeaders.Add , , "Name", 2000
- .ColumnHeaders.Add , , "Tel", 1500
- .ColumnHeaders.Add , , "PV", 1000, 1
- End With
- End Sub
复制代码
Step 4: 从 database 放 data 进 ListView
- Private Sub LoadListView()
- Dim objListItem As ListItem '用这个会比较方便
- Dim i As Integer
- i = 1
-
- Me.lvwMain.ListItems.Clear
- RS.Open "usp_select_customers" '和 SELECT statement 一样,只不过这是用 stored procedure
- While Not RS.EOF
- Set objListItem = Me.lvwMain.ListItems.Add(, , i)
- objListItem.SubItems(1) = RS("customer_no")
- objListItem.SubItems(2) = RS("customer_name")
- objListItem.SubItems(3) = RS("customer_phone_no")
- objListItem.SubItems(4) = RS("customer_pv")
- objListItem.Tag = RS("customer_id")
- i = i + 1
- RS.MoveNext
- Wend
- Set objListItem = Nothing
- RS.Close
- End Sub
复制代码
Step 5: 从 Double Click ListView event 拿到 ID
- Private Sub lvwMain_DblClick()
- If Me.lvwMain.ListItems.Count < 1 Then Exit Sub
- Field_ID = Me.lvwMain.ListItems(Me.lvwMain.SelectedItem.Index).Tag
- End Sub
复制代码
CheckBox 的 ListView 多了 ItemCheck 的 event。例如
- Private Sub lvwMain_ItemCheck(ByVal Item As MSComctlLib.ListItem)
- 'checked 后要 update 什么
- End Sub
复制代码
ListView 如果当按 ColumnHeader 时要 sort data 就加
- Private Sub lvwMain_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
- With lvwMain
- .Sorted = True
- .SortKey = ColumnHeader.Index - 1
- .SortOrder = IIf(blnSort, lvwAscending, lvwDescending) 'blnSort 用来决定顺序和逆序
- blnSort = IIf(blnSort, 0, 1)
- .Sorted = False
- End With
- 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,然 ...
谢谢你!如果有什么不明白我可以问你吗?对不起哦,你开的帖还要麻烦你。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 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 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 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] |
|
|
|
|
|
|
| |
本周最热论坛帖子
|