vb.net. Как связать набор данных с DataRepeater? - PullRequest
3 голосов
/ 09 февраля 2010

Я ищу vb.net пример того, как связать набор данных / набор данных с повторителем данных и привязать ли элементы данных к столбцам набора данных / datatable? Спасибо

Ответы [ 2 ]

3 голосов
/ 09 февраля 2010

Сначала я подумал, что вам нужен веб-ретранслятор, но из ваших комментариев я понял, что вы имеете в виду Microsoft.VisualBasic.PowerPacks.DataRepeater.

Мне нужна дополнительная информация от вас, чтобы дать наиболее полезный пример кода (см. Ниже).

Основные этапы использования DataRepeater:
1) Установите блоки питания Visual Basic 3 Ссылка
2) Откройте проект VB.net Winforms и перетащите DataRepeater на вашу форму
3) Добавьте новый набор данных в ваш проект через меню Add-> New Item
4) В окне дизайна настройте столбцы по желанию
5) Откройте окно Источники данных из меню Данные-> ShowDataSources
6) Когда ваша форма находится в режиме разработки, перейдите к набору данных в окне Источники данных и используйте раскрывающийся список рядом с именем таблицы, чтобы выбрать «Сведения»
7) Перетащите таблицу в верхнюю часть элемента управления DataRepeater (в вашей форме). Поля таблицы теперь должны быть указаны в вашем DataRepeater. Вы можете перемещать их.
8) Во время выполнения вы можете загрузить набор данных, и DataRepeater автоматически отразит изменения данных. Нет. Требуется привязка данных
напр.

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

или

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

Вас что-нибудь запутало на каком-то из этих шагов?


Редактировать:

Из того, что я видел, похоже, что DataRepeater предназначен для использования в ситуациях, когда вы добавляете / сопоставляете объект данных с DataRepeater во время разработки. Затем все, что вам нужно сделать, это заполнить таблицу данных во время выполнения, и DataReader автоматически покажет данные.

Если вы действительно хотите добавить таблицу / элементы управления в DataRepeater во время выполнения, вот пример, который я написал для вас. Он принимает форму с именем Form3 с DataRepeater с именем DataRepeater1 и кнопку с именем 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: Ссылка

Окончательное редактирование

Последняя ошибка пользователя была проблема чувствительности к регистру. Строка «Текст» в следующей строке кода должна начинаться с заглавной буквы, чтобы соответствовать имени свойства элемента управления. Я рекомендую создать const для «Test», чтобы избежать этой опечатки.

[ControlName].DataBindings.Add(New System.Windows.Forms.Binding("Text", [DataTable], [Column Name], True))
2 голосов
/ 09 февраля 2010
Dim data As DataSet
DataRepeater1.DataSource = data
DataRepeater1.DataBind()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...