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

Foi útil?

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()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top