0

List(Of Object) を DataRepeater にバインドする正しい方法は何ですか? これのサンプルコードを提供できますか?

私はこれについて頭を悩ませてきました.リピーターに表示するためにすでに満たされたリストを取得できますが、リストへのその後の変更はDataRepeaterに影響しません.

最終的には、可能であればこれを使用して辞書にバインドしたいと考えていますが、ここで基本を機能させることさえできません。

フォーム デザイン サーフェイスにデータ リピーターが追加され、ItemTemplate に 3 つのラベルと進行状況バーが表示されます。リストとリピーターをセットアップするために私が試みたコード(DutDataはDataRepeaterです)は次のとおりです。

Public Class BurnIn
    Public Shared currentDuts As New Dictionary(Of UInteger, DeviceUnderTest)   ' Collection of all current DUTs.
    Dim bs As New BindingSource
    Dim testTemp As Boolean = False
    Dim testList As New List(Of DeviceUnderTest)

    Private Sub BurnIn_Load() Handles Me.Load
        '...
        ' Add two items to the dictionary and populate them
        currentDuts.Add(0, New DeviceUnderTest(Me.user, 0))
        currentDuts.Item(0).RackBay = "012345678901"
        currentDuts.Item(0).AssemblySerial = "123456789"
        currentDuts.Item(0).SetProgram(1, "Program1")

        currentDuts.Add(currentDuts.Count, New DeviceUnderTest(Me.user, 1))
        currentDuts.Item(1).RackBay = "109876543210"
        currentDuts.Item(1).AssemblySerial = "1319A5126"
        currentDuts.Item(1).SetProgram(1, "Program1")
        ' Copy the items to the test list.
        testList.Add(currentDuts.Item(0))
        testList.Add(currentDuts.Item(1))
        testTemp = True

        ' Setup the binding source, data source and data bindings.
        bs.DataSource = testList
        LocationLabel.DataBindings.Add("Text", bs, "RackBay")
        DutLabel.DataBindings.Add("Text", bs, "AssemblySerial")
        ProgramLabel.DataBindings.Add("Text", bs, "Program")
        DutProgress.DataBindings.Add("Value", bs, "Progress")
        DutData.DataSource = testList
        '...
        Me.Show()
    End Sub

次に、リスト アイテムの追加または削除をテストします。

    Private Sub Button1_Click() Handles Button1.Click
        If testTemp = False Then
            ' Add an item to the dictionary and populate it.
            currentDuts.Add(currentDuts.Count, New DeviceUnderTest(Me.user, 1))
            currentDuts.Item(1).RackBay = "109876543210"
            currentDuts.Item(1).AssemblySerial = "1319A5126"
            currentDuts.Item(1).SetProgram(1, "Program1")
            ' Copy the item to the test list.
            testList.Add(currentDuts.Item(1))
            testTemp = True
        Else
            ' Remove the item from the dictionary and the list.
            currentDuts.Remove(1)
            testList.Remove(testList.Item(1))
            testTemp = False
        End If
    End Sub
End Class
4

1 に答える 1

1

まず、List を BindingList に置き換えることです

Dim testList As New BindingList(Of DeviceUnderTest)
于 2013-08-23T09:46:21.283 に答える