Я пытаюсь заполнить набор записей в ListView в VBA.Идея состоит в том, чтобы добавить имя столбца в качестве ключа, чтобы впоследствии я мог получить доступ к элементу с именем
. Вот как я заполняю список.Я хочу показать только один столбец, но оставить остальные свойства с шириной столбца 0
rs.MoveFirst
Dim fieldCounter As Integer
Dim columnWidth As Integer
With lstProgram
.View = lvwReport
.Gridlines = True
.FullRowSelect = True
For fieldCounter = 0 To rs.Fields.count - 1
columnWidth = 300
If fieldCounter <> 0 Then
columnWidth = 0
End If
.ColumnHeaders.Add fieldCounter + 1, rs.Fields(fieldCounter).Name, rs.Fields(fieldCounter).Name, columnWidth
Next fieldCounter
Do
If Not (IsNull(rs.Fields(0).value)) Then
Dim tmpItem As ListItem
For fieldCounter = 1 To rs.Fields.count
If fieldCounter = 1 Then
Set tmpItem = .listItems.Add(, , rs.Fields(fieldCounter - 1).value)
Else
If Not IsNull(rs.Fields(fieldCounter - 1).value) Then
tmpItem.ListSubItems.Add text:=rs.Fields(fieldCounter - 1).value
Else
tmpItem.ListSubItems.Add text:=""
End If
End If
Next fieldCounter
End If
rs.MoveNext
Loop Until rs.EOF
End With
Тогда я хотел бы сделать что-то вроде этого ...
Private Sub DisplayProgramItem(ByVal Item As MSComctlLib.ListItem)
On Error GoTo error
'
txtOpexID.text = Item.ListSubItems("OPEXID")
txtName.text = Item.text
cmbCluster.text = Item.ListSubItems("Cluster")
done:
Exit Sub
error:
ErrNotify Err, Me.Name, "lstProgram_ItemClick"
Resume done
End Sub
Любая идея, какчтобы достичь этого?
Я нашел несколько интересных ссылок, но ни одна из них не решила мою проблему, я думаю, или, по крайней мере, я не смог решить проблему с дублированным ключом при попытке
Set tmpItem = .listItems.Add(,rs.Fields(fieldCounter - 1).Name, rs.Fields(fieldCounter - 1).value)
https://social.msdn.microsoft.com/Forums/windows/en-US/b96f9fbe-e128-4b49-833d-2a5f6e678dae/access-listview-subitem-text-by-column-header?forum=winforms
https://social.msdn.microsoft.com/Forums/vstudio/en-us/6ed95bf8-6e37-4306-87a6-2267dd83c1d1/refer-to-listview-subitems-by-name?forum=vbgeneral