vb.net. Como faço para vincular o conjunto de dados ao DataReePeater?
-
19-09-2019 - |
Pergunta
Estou procurando um exemplo VB.NET de como vincular um conjunto de dados/DataTable ao repetidor de dados e ter os elementos de dados vinculados às colunas do conjunto de dados/Datatable? Obrigado
Solução
No começo, pensei que você queria um repetidor da web, mas, de seus comentários, percebi que você quis dizer Microsoft.VisualBasic.PowerPacks.DatarePeater.
Preciso de mais informações suas para fornecer o código de exemplo mais útil (veja abaixo).
As etapas básicas do uso de um DataSarepeater são:
1) Instale o Visual Basic Power Packs 3 Link
2) Abra um projeto VB.NET WinForms e arraste um DataRePeater para o seu formulário
3) Adicione um novo conjunto de dados ao seu projeto por meio de add-> Novo menu de item
4) Na janela de design, configure as colunas conforme desejado
5) Abra a janela de fontes de dados do Data-> ShowDataSources Menu
6) Com o seu formulário no modo de design, vá para o conjunto de dados na janela Fontes de dados e use a caixa suspensa ao lado do nome da tabela para selecionar "Detalhes"
7) Arraste a tabela para a seção superior do controle DataSarePeater (no seu formulário). Os campos da tabela agora devem estar listados no seu DataRePeater. Você pode movê -los.
8) No tempo de execução, você pode carregar o DatSet e o DataSeePeater refletirá automaticamente as alterações de dados. Não .databind é necessário
ex.
me.DataSet1.Tables(0).Columns.Add(New String() {"John", "Doe", "Accountant"}
ou
myDataAdapter.Fill(me.DataSet1.Tables(0))
Você é tropeçado em alguma dessas etapas?
Editar:
Pelo que eu vi, parece que o DataReePeater deve ser usado em situações em que você adicione/mapeie o DataTable ao DataSarepeater no tempo de design. Então, tudo o que você precisa fazer é preencher o DataTable em tempo de execução e o DataReader mostra os dados automaticamente.
Se você realmente deseja adicionar a tabela/controles ao DataRePeater no tempo de execução, aqui está um exemplo que codifiquei para você. Ele assume um formulário chamado Form3 com um DataReePeater chamado DataSarepeater1 e um botão chamado 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
Agora que você viu o código, espero que não o use :)
Sugiro que você configure sua estrutura de dados no tempo de design ou use um controle diferente para exibir seus dados.
Aqui está um link que tem muitas informações sobre a maneira típica de usar o DataRePeater:Link
Edição final
O último bug do usuário foi um problema de sensibilidade ao caso. A string "Texto" na linha de código a seguir deve ser capitalizada para corresponder ao nome da propriedade do controle. Eu recomendo criar uma const para "teste" para evitar esse erro de digitação.
[ControlName].DataBindings.Add(New System.Windows.Forms.Binding("Text", [DataTable], [Column Name], True))
Outras dicas
Dim data As DataSet
DataRepeater1.DataSource = data
DataRepeater1.DataBind()