VB.Net/WebForms - 将keyvaluepair列表绑定到ListView

时间:2011-09-20 05:41:53

标签: asp.net vb.net listview webforms

我正在尝试将一个新列表(KeyValuePair(Of String,Integer))绑定到listView 目前,我有一个代码:

Dim TestList As List(Of KeyValuePair(Of String, Integer))
For Each key in GetTPDesc (Which is a list of strings)
    TestList.Add(New KeyValuePair(Of String, Integer)(GetTPDesc.ToString, 0))
Next
For Each ArtFailedPair in Table
    TestAddIndex = ArtFailedPair.Failed
    If TestAddIndex <> 0 Then
        TestList(TestAddIndex -1) = New KeyValuePair(Of String, Integer)(TestList(TestAddIndex -1).Key, TestList(TestAddIndex -1).Value +1)
    End If
Next

请注意长代码块,我知道实现是脏的,我之所以使用List of KeyValuePair,是因为需要基于索引的收集,哪个字典没有提供给我,因为我认为它将。 然后我尝试绑定:

listView.DataSource = TestList
listView.DataBind()

并且ItemTemplate具有Eval(“key”)和Eval(“value”),当然。但它给了我一个错误,它告诉我: System.Data.Objects.ObjectQuery'1 [System.String]而不是GetTPDesc。 而且我也认为是一个不正确的整数值,因为它看起来似乎不合时宜。 感谢。

GetTPDesc:

Dim GetTPDesc = (From tpProducts In context.TestResultLim
                 Where tpProducts.Art_no = productNumber
                 Order By tpProducts.TP_no
                 Select tpProducts.TP_desc)

2 个答案:

答案 0 :(得分:1)

首先,List(of T)未实例化。

 Dim TestList As New List(Of KeyValuePair(Of String, Integer))

并且您必须添加密钥而不是GetTPDesc.ToString()

TestList.Add(New KeyValuePair(Of String, Integer)(key, 0))

答案 1 :(得分:1)

错误如下:

For Each key in GetTPDesc
    TestList.Add(New KeyValuePair(Of String, Integer)(key, 0))
Next

您要将查询添加到列表而不是字符串。