3

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

4

2 回答 2

3

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

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

使用 DataRepeater 的基本步骤是:
1) 安装 Visual Basic Power Packs 3 Link
2) 打开一个 VB.net Winforms 项目并将 DataRepeater 拖到您的表单中
3) 通过 Add->New Item 将一个新数据集添加到您的项目中菜单
4) 在设计窗口中,根据需要设置列
5) 从 Data->ShowDataSources 菜单打开 Data Sources 窗口
6) 在设计模式下,转到 Data Sources 窗口中的 Dataset,然后使用下拉框到表名以选择“详细信息”
7) 将表拖到 DataRepeater 控件的顶部(在您的表单上)。现在应该在 DataRepeater 上列出表字段。你可以移动它们。
8) 在运行时,您可以加载数据集,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 的典型方式的大量信息: 链接

最终编辑

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

[ControlName].DataBindings.Add(New System.Windows.Forms.Binding("Text", [DataTable], [Column Name], True))
于 2010-02-09T05:25:29.343 回答
2
Dim data As DataSet
DataRepeater1.DataSource = data
DataRepeater1.DataBind()
于 2010-02-09T14:18:00.900 回答