NOVA LINHA EM DATAGRID

PERCIFILHO 16/05/2016 16:36:16
#462143
Como você está preenchendo o DataGridView, não é com o DataSource?
Se for, é só fazer como o exemplo do Kerplunk.
Adiciona o item na List<T>, ou no DataTable, não sei como está usando e aí, vincula o DataSource novamente ao DataGridView e pronto.
Se quiser, posta a parte do código em que você preenche o DataGridView que a galera aqui te ajuda.
Abraços;
OCELOT 16/05/2016 17:48:10
#462145
Como já falaram tudo depende do que você passou para o DataSource do grid.

Um único detalhe é que apesar de o que o KERPLUNK falou funcionar caso o grid tenha sido preenchido com o List<T> isso não é o ideal, o ideal seria em vez de usar um List<T> usar o BindingList<T>, pois assim apenas de adicionar um novo item no BindingList<T> o grid já vai ser notificado e vai mostrar esse novo registro, sem precisar remover e adicionar o DataSource, que forçaria o grid a recriar todas as linhas.

Outro detalhe importante, se estiver criando objetos para representar os dados o ideal para usar o grid é implementar a interface INotifyPropertyChanged no seu objeto, pois assim se você modificar um valor em qualquer objeto que está no grid por código ele automaticamente exibe as alterações.
KERPLUNK 16/05/2016 18:46:24
#462148
Um List<T> pode perfeitamente servir de BindingSource e não necessita ser uma BindingList<T>, inclusive usando BindingNavigator, para servir de controle de adicionar e excluir. Um BindingSource, pode servir de fonte de dados para qualquer componente. Como sei que vão querer ver [Ô]exemplo[Ô], aqui vai um em anexo.
OCELOT 17/05/2016 10:21:24
#462173
Citação:

:
Um List<T> pode perfeitamente servir de BindingSource e não necessita ser uma BindingList<T>, inclusive usando BindingNavigator, para servir de controle de adicionar e excluir. Um BindingSource, pode servir de fonte de dados para qualquer componente. Como sei que vão querer ver [Ô]exemplo[Ô], aqui vai um em anexo.


Sim funciona, mas não é ideal, pois o List<T> não implementa a interface IBindingList, o que faz com que um DataGridView não seja notificado caso um item seja adicionado ou removido deste List<T>

Criei um exemplo simples para mostrar a diferença, é basicamente uma tela com um DataGridView e alguns campos para adicionar dados direto no objeto que foi usado como DataSource deste grid, uma usando List<T> e outra usando BindingList<T>, o código é idêntico nos dois mudando apenas qual tipo de lista usei.

No List<T> quando adiciono um novo objeto nele nada muda no DataGridView, já com o BindingList<T> no momento que adiciono o novo item ele é automaticamente exibido no DataGridView.
KERPLUNK 17/05/2016 18:15:33
#462195
Estamos em sintonia. No exemplo que passei, uso List<T> EM um BindingSource e o comportamento é o mesmo. Adicionando um ítem no BindingSource, é adicionado tanto no List<T> quanto no Grid ou qualquer objeto que esteja ligado ao BindingSource.
KERPLUNK 17/05/2016 21:27:40
#462197
Em anexo, mais um pequeno programinha mostrando possibilidades para um grid. Features:
- OminSearch: procura qualquer valor em qualquer propriedade de qualquer ítem da lista e os exibe no grid em tempo real
- Exibindo dados do ítem atual em uma PropertyGrid
- Buscando títulos e tooltip das colunas com Reflection
- Dados controlados por um BindingSource
- Anexando controles diferenciados como valores de célula, no caso, células do tipo Data, são alteradas usando um controle DateTimePicker
- Adição e exclusão de ítens com um controle BindingNavigator
- Mostrando o uso de decorações para personalizar o PropertyGrid, como Descrição da propriedade e agrupamento no PropertyGrid

Tudo isso, com algo em torno de 20 linhas de código apenas, desde que, se use OOP e suas versatilidades.
VARUS 18/05/2016 13:21:34
#462210
é assim que eu preencho o grid

  Dim conn As New MySqlConnection
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String



conn = New MySqlConnection
conn.ConnectionString = [Ô]server=localhost;user id=root;password=123456;database=test[Ô]
SQL = [Ô] SELECT C_C FROM TABELA;[Ô]


Try
conn.Open()
Try
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
DataGridView1.DataSource = myData
conn.Close()
Catch myerro As MySqlException
MsgBox([Ô]Test Connection: ERROR[Ô] & myeror.Message)
End Try
Catch myerro As MySqlException
MsgBox([Ô]Erro; [Ô] & myerro.Message)
Finally
conn.Close()
End Try
VARUS 18/05/2016 16:46:25
#462220
CONSEGUI DESTA FORMA;

No código acima, o MyData, coloquei ele como uma variável global,

  dataTableG01LE 




   Dim row As DataRow
Dim view As DataView

[ô], , , , , , , , ,
[ô], , ,
row = dataTableG01LE.NewRow()
row([Ô]colum1[Ô]) = Id.text
row([Ô]colum2[Ô]) = Nome.text
row([Ô]colum3[Ô]) = site.text
row([Ô]colum4[Ô]) = e-mail.text



dataTableG01LE.Rows.Add(row)

view = New DataView(dataTableG01LE)
Grid2.DataSource = view


Adicione uma nova linha, mesmo a carregando direto do banco
Font: https://msdn.microsoft.com/pt-br/library/system.data.datatable.newrow(v=vs.110).aspx
JABA 18/05/2016 17:01:09
#462221
Você está fazendo exatamente como eu havia dito.
VARUS 18/05/2016 17:05:02
#462223
Siiim
Página 2 de 3 [22 registro(s)]
Tópico encerrado , respostas não são mais permitidas