DATAGRIDVIEW
Olá pessoal, tudo bem?
Como criar row dinamicamente e diretamente pelo datagridview?
obs: preciso criar rows sem uitlizar datasets ou datatble, ou seja, diretamente no controle.
Alguem poderia me ajudar?
vlw
Como criar row dinamicamente e diretamente pelo datagridview?
obs: preciso criar rows sem uitlizar datasets ou datatble, ou seja, diretamente no controle.
Alguem poderia me ajudar?
vlw
DataGridView1.Rows.Add([Ô]Teste[Ô], [Ô]Teste01[Ô])
ok.
O problema é o seguinte:
eu criei as colunas e os cabeçalhos amarrados para as propriedades do meu obj pelo DataPropertyName do controle DataGridView, sendo assim, quando tento criar uma nova row(nao preenchida) em tempo de execucao, o vb diz que nao posso criar rows em tempo de execucao porque estou usando o controle como databound, como contornar esse problema?
Olha o erro que gera: [Ô]Rows cannot be programmatically added to the DataGridView[ô]s rows collection
when the control is data-bound.[Ô]
obs: as colunas e os cabeçalhos ja existem, pois foram criados manualmente em tempo de design.
vlw
O problema é o seguinte:
eu criei as colunas e os cabeçalhos amarrados para as propriedades do meu obj pelo DataPropertyName do controle DataGridView, sendo assim, quando tento criar uma nova row(nao preenchida) em tempo de execucao, o vb diz que nao posso criar rows em tempo de execucao porque estou usando o controle como databound, como contornar esse problema?
Olha o erro que gera: [Ô]Rows cannot be programmatically added to the DataGridView[ô]s rows collection
when the control is data-bound.[Ô]
obs: as colunas e os cabeçalhos ja existem, pois foram criados manualmente em tempo de design.
vlw
Eu fiz um exemplo no vb 2010
Muito bom ADHEL, o teu projeto funciona perfeitamente, só que quando eu preencho o grid inicialmente com dg.DataSource = datatable, acontece a mesmo problema que estou tendo aqui.
Isso tudo só acontece porque estou preenchendo o datagridview inicialmente por uma fonte datatable e utilizando o datasource do grid para popula-lo, a partir daÃ, quando eu tento adicionar um item na grid, gera o seguinte erro: [Ô]Rows cannot be programmatically added to the DataGridView[ô]s rows collection
when the control is data-bound.[Ô]
De qualquer forma,
Muito Obrigado.
Isso tudo só acontece porque estou preenchendo o datagridview inicialmente por uma fonte datatable e utilizando o datasource do grid para popula-lo, a partir daÃ, quando eu tento adicionar um item na grid, gera o seguinte erro: [Ô]Rows cannot be programmatically added to the DataGridView[ô]s rows collection
when the control is data-bound.[Ô]
De qualquer forma,
Muito Obrigado.
Jaba
Porque você tem que adicionar itens nesse mesmo grid?
Dependendo da resposta ,poderemos achar outro caminho.
Porque você tem que adicionar itens nesse mesmo grid?
Dependendo da resposta ,poderemos achar outro caminho.
Digamos que o cara queira adicionar um novo item, com isso, eu nao quero recarregar todo o grid para atualizar somente um item, essa é a minha intencao.
esse é o codigo que estou utilizando para preencher a grid:
Public Shared Function PreencheLista(ByVal Colecao As Object, ByRef Grid As DataGridView) As Boolean
Dim dt As New DataTable
Try
If Colecao IsNot Nothing Then
[ô]Retorna a estrutura das colunas de uma Grid para um datatable
For i As Integer = 0 To Grid.Columns.Count - 1
dt.Columns.Add(Grid.Columns.Item(i).HeaderText)
dt.Columns.Item(i).Caption = Grid.Columns.Item(i).HeaderText
dt.Columns.Item(i).ColumnName = Grid.Columns.Item(i).DataPropertyName
Next
If dt.Columns.Count - 1 > 0 Then
[ô]Preenche um datatable de acordo com as propriedades encontradas na estrutura da grid
For Each Obj As Object In Colecao
Dim dr As DataRow = dt.NewRow
For x As Integer = 0 To dt.Columns.Count - 1
dr(x) = Get_Valor_Propriedade(Obj, dt.Columns.Item(x).ColumnName)
Next
dt.Rows.Add(dr)
Next
End If
[ô]Retorna um datatable com os dados ja inseridos
Grid.DataSource = dt
Return True
Else
Return False
End If
Catch
Throw New Exception([Ô]Ocorreu um erro ao preencher os dados no Grid[Ô])
Finally
dt = Nothing
End Try
End Function
esse é o codigo que estou utilizando para preencher a grid:
Public Shared Function PreencheLista(ByVal Colecao As Object, ByRef Grid As DataGridView) As Boolean
Dim dt As New DataTable
Try
If Colecao IsNot Nothing Then
[ô]Retorna a estrutura das colunas de uma Grid para um datatable
For i As Integer = 0 To Grid.Columns.Count - 1
dt.Columns.Add(Grid.Columns.Item(i).HeaderText)
dt.Columns.Item(i).Caption = Grid.Columns.Item(i).HeaderText
dt.Columns.Item(i).ColumnName = Grid.Columns.Item(i).DataPropertyName
Next
If dt.Columns.Count - 1 > 0 Then
[ô]Preenche um datatable de acordo com as propriedades encontradas na estrutura da grid
For Each Obj As Object In Colecao
Dim dr As DataRow = dt.NewRow
For x As Integer = 0 To dt.Columns.Count - 1
dr(x) = Get_Valor_Propriedade(Obj, dt.Columns.Item(x).ColumnName)
Next
dt.Rows.Add(dr)
Next
End If
[ô]Retorna um datatable com os dados ja inseridos
Grid.DataSource = dt
Return True
Else
Return False
End If
Catch
Throw New Exception([Ô]Ocorreu um erro ao preencher os dados no Grid[Ô])
Finally
dt = Nothing
End Try
End Function
Esse metodo PreencheLista funciona perfeitamente, o problema acontece quando eu quero adicionar um item em tempo de execucao sem precisar recarregar toda a lista.
Alguem ae ja passou por isso?
vlw
Alguem ae ja passou por isso?
vlw
Olha, li alguns arquivos e não é muito animador.
talvez terá que NOVAMENTE chamar a rotina de exibição dos dados após a nova inserção
talvez terá que NOVAMENTE chamar a rotina de exibição dos dados após a nova inserção
putz, mas vc descobriu qual é o motivo?
Olha se dá para fazer o que você quer,eu não sei te responder.
mas o mais fácil é carregar o grid novamente.
Coloquei o erro que gera no google.tem um monte do tópico,um ou dois que tentei como solução não deu certo.
mas o mais fácil é carregar o grid novamente.
Coloquei o erro que gera no google.tem um monte do tópico,um ou dois que tentei como solução não deu certo.
Tópico encerrado , respostas não são mais permitidas