2012-02-21 8 views
1

私は、データセットからレコードを表示するためにListViewを使用しようとしています。これらのレコードには、EmployeeID、EmployeeName、CustomerID、およびCustomerNameの4つの列があります。従業員と顧客の両方を複数回リストすることは可能ですが、組み合わせは異なります。例えばVB.Net ListView

、我々は従業員1、2、3及び顧客A、B、Cを持っている場合、我々がいる可能性が: (1A) (1B) (1C) (2A)等 (2B)

私はlistViewに(1A)を追加して、(1B)を追加しようとすると、同じアイテムを追加できないというエラーが表示されます。

ここに私のコードは、これまでのところです:

With list 
    .Clear() 
    .Columns.Add("Employee ID") 
    .Columns.Add("Employee Name") 
    .Columns.Add("Customer ID") 
    .Columns.Add("Customer Name") 
    For Each row As UpFromCostExceptions.dtExceptionsRow In _dsExceptions.dtExceptions 
     Dim lvItem As ListViewItem = .Items.Add(row.EmpID.ToString) 
     lvItem.SubItems.Add(row.EmployeeName) 
     lvItem.SubItems.Add(row.CustomerID) 
     lvItem.SubItems.Add(row.CustomerName) 
    Next 
    .Refresh() 
End With 

誰もが何が起こっている参照してください?助けを前にありがとう!

+0

複合フィールドのデータをどこに使用しているのかわかりません。 CustomerIDが数値の場合、EmpIDで行ったように.ToString()をインクルードする必要があります。 –

+0

私は1つのフィールドで結合されたデータを使用していません。しかし、私はlistViewのための2つの項目があります。どちらの項目もEmpIDは同じ値を持ちますが、CustomerIDの値は異なります。 2番目の項目を追加しようとすると、同じEmpIDを追加できないため、エラーが発生します。 –

答えて

1

私が通過し、アイテムを作成し、リストビューにのListViewItemを追加する前にサブ項目を追加した場合、私は重複する値を持つことができることを考え出しました。私が使用したコードは次のとおりです。

0

row.EmpID.ToString()をユニークにして、まだ例外をスローするかどうかを確認してください。

Dim lvItem As ListViewItem = .Items.Add(row.EmpID.ToString) 
+0

あなたは何を意味するのか分かりません。リストは、行全体が別の行と一致しない限り、重複を受け入れることができる必要があります。 CustomerIDが異なる限り、1つのEmployeeIDをリストに複数回表示することができます。あなたが何か他のものを参照している場合は、明確にしてください。 –

+0

はい、私はItems.Addに入力する最初の文字列がクリアされていないことを理解しています。アイテムがハッシュに格納されているため、サブアイテム内のユニークなものでなければなりません –

3

これを試してみてください。私はこのように2つのフィールド、識別子、タイトル、人口リストを持つ単純なクラスを持っています。

'lstv = is the actual ListView Control 
Dim i As Integer 
Dim listitem As New ListViewItem 
If lstv.Items.Count > 0 Then 
    lstv.Items.Clear() 
End If 
For i = 0 To PropertyList.Count - 1 
    listitem = New ListViewItem(PropertyList(i).Idefntifier) 
    listitem.SubItems.Add(PropertyList(i).Title)   
    lstv.Items.Add(listitem) 
Next i