数组输出中的引用字典到列表框
reference dictionary within array output to listbox
标题说明了我的问题。
我使用的是 Api(对于垂直响应,电子邮件列表管理器),效果很好。但是对于特定方法 returns 一个数组,其中我需要引用的信息在该数组内的字典中。
Array[list_id, list_name, list_type, member_data] <- member_data 是我所有好东西的字典。
我设法得到的最好的结果是列表框为每个成员输出 "com.verticalresponse.api.NVPair[]"。
代码
Protected Sub GetBounces()
Dim listID As Integer = 284662333
Dim isMember As Boolean = False
Dim newSession As New loginArgs()
newSession.username = username
' Your VerticalResponse username
newSession.password = password
newSession.session_duration_minutes = "120"
Dim VRUser As New VRAPI()
Try
sessionID = VRUser.login(newSession)
Dim GetMembers As New getListMembersArgs()
Try
GetMembers.session_id = sessionID
GetMembers.list_id = listID
GetMembers.max_records = 8
Try
Dim listmembers As Array = VRUser.getListMembers(GetMembers)
lstBounces.DataSource = listmembers
lstBounces.DataValueField = ("member_data").ToString()
lstBounces.DataBind()
Catch ex As Exception
lstBounces.Text = "One: " + ex.ToString()
End Try
Catch listex As Exception
lstBounces.Text = "Two: " + listex.ToString()
End Try
Catch ex As System.Exception
lstBounces.Text = "Three: " + ex.ToString()
End Try
End Sub
编辑
我采纳了 Keith Mifsud 的建议,并在 Databind 之前添加了一个断点。它告诉我 "listmembers" 有八个索引(目前只通过搜索 8 来测试(总列表将接近 8000,其中大约需要 1900。))
这 8 个索引中的每一个都包含我正在查看的 4 列,所以当我使用 listmembers(3) 作为数据源时,我实际上只搜索第四个结果,而不是 member_data 列。 .
是否有正确的方法来引用结果列?
类似于:
lstbounces.DataSource = listmembers( ,3)
但不是那个,一个正确的?
我认为你应该将数据源设置为字典而不是保存它的数组
Try
Dim listmembers As Array = VRUser.getListMembers(GetMembers)
lstBounces.DataSource = listmembers(3)
'As the datasource is a dictionary, I don't think you have to set up the display and value fields
'lstBounces.DataValueField = ("member_data").ToString()
lstBounces.DataBind()
Catch ex As Exception
lstBounces.Text = "One: " + ex.ToString()
End Try
更新
根据集合类型(数组每个元素中的字典),我建议您使用允许扩展行的 .net DataView。有一些非常好的教程可以指导您创建视图
标题说明了我的问题。
我使用的是 Api(对于垂直响应,电子邮件列表管理器),效果很好。但是对于特定方法 returns 一个数组,其中我需要引用的信息在该数组内的字典中。
Array[list_id, list_name, list_type, member_data] <- member_data 是我所有好东西的字典。
我设法得到的最好的结果是列表框为每个成员输出 "com.verticalresponse.api.NVPair[]"。
代码
Protected Sub GetBounces()
Dim listID As Integer = 284662333
Dim isMember As Boolean = False
Dim newSession As New loginArgs()
newSession.username = username
' Your VerticalResponse username
newSession.password = password
newSession.session_duration_minutes = "120"
Dim VRUser As New VRAPI()
Try
sessionID = VRUser.login(newSession)
Dim GetMembers As New getListMembersArgs()
Try
GetMembers.session_id = sessionID
GetMembers.list_id = listID
GetMembers.max_records = 8
Try
Dim listmembers As Array = VRUser.getListMembers(GetMembers)
lstBounces.DataSource = listmembers
lstBounces.DataValueField = ("member_data").ToString()
lstBounces.DataBind()
Catch ex As Exception
lstBounces.Text = "One: " + ex.ToString()
End Try
Catch listex As Exception
lstBounces.Text = "Two: " + listex.ToString()
End Try
Catch ex As System.Exception
lstBounces.Text = "Three: " + ex.ToString()
End Try
End Sub
编辑
我采纳了 Keith Mifsud 的建议,并在 Databind 之前添加了一个断点。它告诉我 "listmembers" 有八个索引(目前只通过搜索 8 来测试(总列表将接近 8000,其中大约需要 1900。))
这 8 个索引中的每一个都包含我正在查看的 4 列,所以当我使用 listmembers(3) 作为数据源时,我实际上只搜索第四个结果,而不是 member_data 列。 .
是否有正确的方法来引用结果列?
类似于:
lstbounces.DataSource = listmembers( ,3)
但不是那个,一个正确的?
我认为你应该将数据源设置为字典而不是保存它的数组
Try
Dim listmembers As Array = VRUser.getListMembers(GetMembers)
lstBounces.DataSource = listmembers(3)
'As the datasource is a dictionary, I don't think you have to set up the display and value fields
'lstBounces.DataValueField = ("member_data").ToString()
lstBounces.DataBind()
Catch ex As Exception
lstBounces.Text = "One: " + ex.ToString()
End Try
更新
根据集合类型(数组每个元素中的字典),我建议您使用允许扩展行的 .net DataView。有一些非常好的教程可以指导您创建视图