vb.net。如何将数据集绑定到DataRepeater?

时间:2010-02-09 05:11:22

标签: vb.net datarepeater

我正在寻找一个vb.net示例,说明如何将数据集/数据表绑定到数据转发器,并将数据元素绑定到数据集/数据表的列? 感谢

2 个答案:

答案 0 :(得分:3)

起初我以为你想要一个网络中继器,但是从你的评论中我意识到你的意思是Microsoft.VisualBasic.PowerPacks.DataRepeater。

我需要您提供更多信息以提供最有用的示例代码(见下文)。

使用DataRepeater的基本步骤如下:
1)安装Visual Basic Power Pack 3 Link
2)打开VB.net Winforms项目并将DataRepeater拖到表单
上 3)通过Add-> New Item菜单将新数据集添加到项目中 4)在设计窗口中,根据需要设置列 5)从Data-> ShowDataSources菜单中打开Data Sources窗口 6)将表单置于设计模式下,转到“数据源”窗口中的“数据集”,然后使用表名旁边的下拉框选择“详细信息”
7)将表拖到DataRepeater控件的顶部(在表单上)。表字段现在应该在DataRepeater上列出。你可以移动它们。
8)在运行时,您可以加载Datset,DataRepeater将自动反映数据更改。不需要.Databind   离。

me.DataSet1.Tables(0).Columns.Add(New String() {"John", "Doe", "Accountant"}  

myDataAdapter.Fill(me.DataSet1.Tables(0)) 

你是否因为这些步骤而被绊倒?


修改:

从我所看到的情况来看,DataRepeater似乎适用于在设计时将数据表添加/映射到DataRepeater的情况。然后,您所要做的就是在运行时填充数据表,DataReader会自动显示数据。

如果你真的想在运行时将表/控件添加到DataRepeater,这是我为你编写的一个例子。它假设一个名为Form3的表单,其中包含一个名为DataRepeater1的DataRepeater和一个名为Button1的按钮......

Public Class Form3

    ''Set up demo DataSet/DataTable
    Const FRUIT_COL As String = "Fruit"
    Const COLOR_COL As String = "Color"
    MyDataSet = New DataSet
    MyDataSet.Tables.Add("MyTable")
    With MyDataSet.Tables(0)
        .Columns.Add(FRUIT_COL, GetType(System.String))
        .Columns.Add(COLOR_COL, GetType(System.String))
    End With

    ''Populate the DataTable with sample data. You would be loading from SQL
    With MyDataSet.Tables(0)
        .Rows.Add(New String() {"Apple", "Red"})
        .Rows.Add(New String() {"Orange", "Orange"})
        .Rows.Add(New String() {"Banana", "Yellow"})
    End With

    ''These objects would normally be created automatically if you added DataTable to DataRepeater at design-time
    FruitLabel = New Label
    FruitTextBox = New TextBox
    ColorLabel = New Label
    ColorTextBox = New TextBox
    With FruitLabel
        .AutoSize = True
        .Location = New Point(10, 20)
        .Name = "FruitLabel"
        .Text = FRUIT_COL
    End With
    With ColorLabel
        .AutoSize = True
        .Location = New Point(10, 60)
        .Name = "FruitLabel"
        .Text = FRUIT_COL
    End With
    With FruitTextBox
        .Location = New Point(50, 20)
        .Size = New Size(60, 15)
        .DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.MyDataSet.Tables(0), FRUIT_COL, True))
    End With
    With ColorTextBox
        .Size = New Size(60, 15)
        .Location = New Point(50, 60)
        .DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.MyDataSet.Tables(0), COLOR_COL, True))
    End With

    ''Add the controls that will be displayed for each row in DataTable
    With DataRepeater1
        .ItemTemplate.Controls.Add(FruitLabel)
        .ItemTemplate.Controls.Add(FruitTextBox)
        .ItemTemplate.Controls.Add(ColorLabel)
        .ItemTemplate.Controls.Add(ColorTextBox)
    End With

    ''Run-time population of DataRepeater from your DataTable
    DataRepeater1.DataSource = MyDataSet
    DataRepeater1.DataMember = MyDataSet.Tables(0).TableName

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'Example of how you can add additional rows with form elements
    With MyDataSet.Tables(0)
        .Rows.Add(New String() {"Grapes", "Green"})
    End With
End Sub
End Class

既然您已经看过代码,我希望您不要使用它:) 我建议你在设计时设置你的DataSet结构,或者使用不同的控件来显示你的数据。

这是一个链接,其中包含有关使用DataRepeater的典型方法的大量信息: Link

最终修改

用户的最后一个错误是区分大小写的问题。以下代码行中的字符串“Text”必须大写以匹配控件的属性名称。我建议为“Test”创建一个const以避免这个错误。

[ControlName].DataBindings.Add(New System.Windows.Forms.Binding("Text", [DataTable], [Column Name], True))

答案 1 :(得分:2)

Dim data As DataSet
DataRepeater1.DataSource = data
DataRepeater1.DataBind()