'这是我的程序里经常用到的用记录集填充ListView的函数,我花了不少时间熟悉ListView哟 Function FillListview(lvObj As ListView, rcd As ADODB.Recordset)
Dim wid As Integer Dim i As Long Dim j As Integer With lvObj .ListItems.Clear .ColumnHeaders.Clear .View = lvwReport .LabelEdit = lvwManual .FullRowSelect = True .AllowColumnReorder = True For i = 0 To rcd.Fields.Count - 1 wid = rcd.Fields(i).DefinedSize + 3 If wid < Len(rcd.Fields(i).Name) + 3 Then wid = Len(rcd.Fields(i).Name) + 3 If wid > 30 Then wid = 30 wid = lvObj.Parent.TextWidth(String(wid, " ")) .ColumnHeaders.Add i + 1, , rcd.Fields(i).Name, wid Next i = 0 Do While Not rcd.EOF .ListItems.Add , "A" & Trim(i), IIf(IsNull(rcd.Fields(0).Value), "", rcd.Fields(0)) For j = 1 To rcd.Fields.Count - 1 .ListItems("A" & Trim(i)).SubItems(j) = IIf(IsNull(rcd.Fields(j).Value), "", rcd.Fields(j)) Next rcd.MoveNext i = i + 1 Loop End With
在visual foxpro 中只要用object.refresh 就可以,但在vb中就不行。
怎么绑定?
Function FillListview(lvObj As ListView, rcd As ADODB.Recordset)
Dim wid As Integer
Dim i As Long
Dim j As Integer
With lvObj
.ListItems.Clear
.ColumnHeaders.Clear
.View = lvwReport
.LabelEdit = lvwManual
.FullRowSelect = True
.AllowColumnReorder = True
For i = 0 To rcd.Fields.Count - 1
wid = rcd.Fields(i).DefinedSize + 3
If wid < Len(rcd.Fields(i).Name) + 3 Then wid = Len(rcd.Fields(i).Name) + 3
If wid > 30 Then wid = 30
wid = lvObj.Parent.TextWidth(String(wid, " "))
.ColumnHeaders.Add i + 1, , rcd.Fields(i).Name, wid
Next
i = 0
Do While Not rcd.EOF
.ListItems.Add , "A" & Trim(i), IIf(IsNull(rcd.Fields(0).Value), "", rcd.Fields(0))
For j = 1 To rcd.Fields.Count - 1
.ListItems("A" & Trim(i)).SubItems(j) = IIf(IsNull(rcd.Fields(j).Value), "", rcd.Fields(j))
Next
rcd.MoveNext
i = i + 1
Loop
End With
End Function