DATAGRIDVIEW PARA LISTVIEW

EDULOCO 08/10/2012 11:47:44
#411506
Olá pessoal, bom dia... minha dúvida é o seguinte, eu quero passar os dados de um Datagridview para um Listview porém de uma maneira diferente... segue uma foto do projeto para ficar melhor a explicação:



Como na foto de exemplo quando eu procuro o item eles são listados no Datagridview, após eu dar dois cliques na linha do item que eu desejo, alguns dos dados são passados para os textbox abaixo, assim eu só preciso digitar a quantidade de item e mudar o valor se necessário e clicar em inserir produto para jogar os dados para o listview abaixo, agora a dúvida que procurei e não achei nada referente, como que eu faço para cada vez que eu clicar nesse botão [Ô]Inserir Produto[Ô] ele pegar esses dados do textbox e jogar em cada campo certo do listview? Lembrando que vão ser varios produtos no listview antes de clicar no Gerar Impressão, para finalizar a explicação do que eu realmente quero fazer:

[Ô]Cada vez que clicar no botão [Ô]Inserir Produto[Ô] ele vai pegar os resultados que estão no textbox e jogar no listview em cada coluna e na sequencia ja ir jogando nas outras linhas.[Ô]


Eu pesquisei e achei outros meios,porém nenhum deu certo para essa ideia que eu preciso ;s


Agradecendo desde já a ajuda de vocês!!
KERPLUNK 08/10/2012 15:26:17
#411539
Como está preenchendo o gridview? Vem de um DataTable?
EDULOCO 08/10/2012 15:31:51
#411540
O Grid é preenchido fazendo pesquisar em um banco de dados em DBF


Dim oConn As New OdbcConnection()
oConn.ConnectionString = [Ô]Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;Exclusive=No; Collate=Machine;NULL=NO;DELETED=YES;BACKGROUNDFETCH=NO;[Ô]
oConn.Open()
Dim oCmd As OdbcCommand = oConn.CreateCommand()
oCmd.CommandText = [Ô]SELECT prod.prcodigo AS Código,prod.prdescri AS Descrição,prod.prvenda1 AS Preço,prod.prcusto AS Custo,prod.prunidad AS Unidade,prod.prtexto AS Texto FROM PR AS prod WHERE prod.prdescri LIKE[Ô] & [Ô][ô]%[Ô] & txtProdutoVenda.Text & [Ô]%[ô][Ô] & [Ô]ORDER BY prod.prdescri ASC[Ô]
Dim dt As New DataTable()
dt.Load(oCmd.ExecuteReader())
oConn.Close()
dtVenda.DataSource = dt
dtVenda.Columns([Ô]Preço[Ô]).DefaultCellStyle.Format = [Ô]c[Ô]
dtVenda.Columns([Ô]Custo[Ô]).DefaultCellStyle.Format = [Ô]c[Ô]
KERPLUNK 08/10/2012 15:35:47
#411541
Pois é, como tinha dito, vem de um DataTable. Seria melhor fazer um DataReader, preenchendo uma lista de objetos, que posteriormente, podem ser trabalhados, incluindo para preencher o listview que é o que você precisa.
EDULOCO 08/10/2012 15:39:57
#411542
Hmm, por enquanto aprendi a mexer só dessa maneira, como seria o uso do DataReader e a idéia dele? Ai dou uma pesquisada aqui de como funciona.
KERPLUNK 08/10/2012 15:55:53
#411544
O DataReader, é um objeto especializado em leitura, como o próprio nome diz. Você pode fazer a leitura do datareader e passar como fonte de dados para um grid normalmente, mas o ideal é que use os preceitos de POO, assim, ao invés de objetos de banco de dados preenchendo um grid, você vai ter entidades que podem ser buscadas e trabalhadas.
EDULOCO 08/10/2012 16:08:55
#411548
Hmm, tenho que pesquisar sobre tudo isso ae kk, usando essa simples função:



Private Sub btnInserir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInserir.Click
If maskQuantidade.Text = [Ô][Ô] Then
MsgBox([Ô]Campo quantidade vazio[Ô], MsgBoxStyle.Information, [Ô]Campo Vazio[Ô])
maskQuantidade.Focus()
Else
listaSelecionados.Items.Add(txtCodProduto.Text)
listaSelecionados.Items(0).SubItems.Add(txtDescri.Text).ToString()
listaSelecionados.Items(0).SubItems.Add(txtValor.Text).ToString()
listaSelecionados.Items(0).SubItems.Add(maskQuantidade.Text).ToString()
End If
End Sub


eu consigo preencher normal a primeira linha [Ô]row[Ô] do listview, porém quando vou por o segundo item, ele só add o código nas linhas seguintes, os subitems não :/
OMAR2011 08/10/2012 20:07:49
#411577
Resposta escolhida
Tente assim;


Private Sub btnInserir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInserir.Click
If Trim(txtCodigo.Text) = [Ô][Ô] Then
MsgBox([Ô]Campo quantidade vazio[Ô], MsgBoxStyle.Information, [Ô]Campo Vazio[Ô])
txtCodigo.Focus()
Else
Dim item As New ListViewItem
item.Text = (txtCodProduto.Text)
item.SubItems.Add(txtDescri.Text).ToString()
item.SubItems.Add(txtValor.Text).ToString()
item.SubItems.Add(maskQuantidade.Text).ToString()
Me.listaSelecionados.Items.Add(item)
End If

End Sub
EDULOCO 10/10/2012 15:33:08
#411735
OMAR2011 aproveitei essa semaninha para tirar uns dias de folga do trabalho rsrs, voltando a primeira coisa que vou tentar é essa sua dica, mas não entendi muito bem a lógica, você cria uma variável item como sendo uma nova listview? Desculpa é que não compreendo muito bem ainda sobre visual basic net.
EDULOCO 15/10/2012 09:27:14
#412056
OMAR2011, voltei e tentei o que você me disse e deu certo, era exatamente isso que eu queria *-*, só não compreendi muito bem a ideia!! Vou dar uma pesquisada depois sobre isso ae, mas era exatamente isso que eu estava precisando.
Tópico encerrado , respostas não são mais permitidas