LISTVIEW COM CHECKBOXES
Olá, Bom dia amigos.
Tenho uma Listview que é preenchida com dados do BD. Quando o usuário precisa excluir algum registro, ele clica em um botão e a ListView fica com Checkboxes. O usário irá marcar quais registros ele deseja excluir. E como eu faço para excluir todos os registro marcados? Sei que essa é uma pergunta um tanto quanto tola, porém estou dando os primeiros passos em VB.Net por isso estou apanhando um pouco. Gostaria muito da colaboração e da paciência de todos vocês.
Até mais.
Tenho uma Listview que é preenchida com dados do BD. Quando o usuário precisa excluir algum registro, ele clica em um botão e a ListView fica com Checkboxes. O usário irá marcar quais registros ele deseja excluir. E como eu faço para excluir todos os registro marcados? Sei que essa é uma pergunta um tanto quanto tola, porém estou dando os primeiros passos em VB.Net por isso estou apanhando um pouco. Gostaria muito da colaboração e da paciência de todos vocês.
Até mais.
Basicamente assim.
Qualquer coisa vai um exemplo em Visual Studio 2010, Fica ai a dica...
Dim arbLVI As ListViewItem
Dim Msg As New StringBuilder
For Each arbLVI In ListView1.Items
If arbLVI.Checked Then
Msg.Append(arbLVI.Text)
Msg.Append([Ô] : [Ô] )
End If
Next
Msg.Remove(Msg.Length - 2, 2)
MessageBox.Show(Msg.ToString, [Ô] Checked Items[Ô] )
Qualquer coisa vai um exemplo em Visual Studio 2010, Fica ai a dica...
Olá, amigo, não consegui abrir o projeto anexado, porém o que eu preciso realmente, é o segunte:
No VB6 eu fazia assim:
For i = 1 To LstParcelas.ListItems.Count
If LstParcelas.ListItems(i).Checked Then
sqlcarne = [Ô]Select * From Carnes Where numerocarne = [Ô] & LstParcelas.ListItems(i) & [Ô] And parcela Like [ô][Ô] & TxtDataParcela.Text & [Ô][ô][Ô]
Set rscarne = db.OpenRecordset(sqlcarne)
If rscarne.EOF Then
MsgBox [Ô]Número do carnê não existe. Não será baixada a parcela[Ô], vbInformation, [Ô]Numero do carnê inválido[Ô]
Exit Sub
Else
rscarne.Edit
rscarne([Ô]pagto[Ô]) = TxtDataBaixa.Text
rscarne.Update
End If
End If
Next
Percorria toda a ListView e verificava qual item está marcado, editando o registro e gravando a data de pagamento.
No VB.Net como ficaria essa rotina? Principalmente no que diz respeito ao item da ListView. Não estou conseguindo a sintaxe correta.
Até mais.
No VB6 eu fazia assim:
For i = 1 To LstParcelas.ListItems.Count
If LstParcelas.ListItems(i).Checked Then
sqlcarne = [Ô]Select * From Carnes Where numerocarne = [Ô] & LstParcelas.ListItems(i) & [Ô] And parcela Like [ô][Ô] & TxtDataParcela.Text & [Ô][ô][Ô]
Set rscarne = db.OpenRecordset(sqlcarne)
If rscarne.EOF Then
MsgBox [Ô]Número do carnê não existe. Não será baixada a parcela[Ô], vbInformation, [Ô]Numero do carnê inválido[Ô]
Exit Sub
Else
rscarne.Edit
rscarne([Ô]pagto[Ô]) = TxtDataBaixa.Text
rscarne.Update
End If
End If
Next
Percorria toda a ListView e verificava qual item está marcado, editando o registro e gravando a data de pagamento.
No VB.Net como ficaria essa rotina? Principalmente no que diz respeito ao item da ListView. Não estou conseguindo a sintaxe correta.
Até mais.
tente usar o ForEach
Abraços
Dim arbLVI As ListViewItem
For Each arbLVI In LstParcelas.ListItems
If LstParcelas.Checked Then
[ô]Aqui vai o codigo se estiver Checado.
End if
Next
Abraços
Bom, zerocal, vamos começar de outra maneira.
O meu código (até onde eu consegui alguma coisa) está assim:
Dim indice As ListViewItem
For Each indice In LstParcelas.CheckedItems
If indice.Checked = True Then
Dim con As New OleDb.OleDbConnection(conexao)
If con.State = ConnectionState.Closed Then con.Close()
con.Open()
sqlparcelas = [Ô]Delete * From Parcelas Where .....[Ô]
Dim cmd As New OleDbCommand(sqlparcelas, con)
cmd.ExecuteNonQuery()
Else
Exit Sub
End If
Next
Na instrução sql é que eu não estou conseguindo. Tenho que deletar o registro onde o campo nome seja igual à primeira coluna da ListView e o campo data seja igual à segunda coluna da ListView.
No VB6 era assim: LstParcelas.ListItems(i) ou LstParcelas.ListItens(i).Subitems(1)
E no VB.Net, como é?
Desculpe a ignorância, mas no começo é assim (depois piora). rsrsrs.
Até mais.
O meu código (até onde eu consegui alguma coisa) está assim:
Dim indice As ListViewItem
For Each indice In LstParcelas.CheckedItems
If indice.Checked = True Then
Dim con As New OleDb.OleDbConnection(conexao)
If con.State = ConnectionState.Closed Then con.Close()
con.Open()
sqlparcelas = [Ô]Delete * From Parcelas Where .....[Ô]
Dim cmd As New OleDbCommand(sqlparcelas, con)
cmd.ExecuteNonQuery()
Else
Exit Sub
End If
Next
Na instrução sql é que eu não estou conseguindo. Tenho que deletar o registro onde o campo nome seja igual à primeira coluna da ListView e o campo data seja igual à segunda coluna da ListView.
No VB6 era assim: LstParcelas.ListItems(i) ou LstParcelas.ListItens(i).Subitems(1)
E no VB.Net, como é?
Desculpe a ignorância, mas no começo é assim (depois piora). rsrsrs.
Até mais.
pra pegar o texto das colunas pegue assim
Segue alguns links pra voce dar uma lida, te ajudará muito
http://www.macoratti.net/vbn_lstv.htm
http://vbtuga.blogspot.com/2008/04/vbnet-implementar-pesquisas-em.html
http://www.portugal-a-programar.org/forum/index.php?topic=49389.0
Espero que ajude, FareBem.
MessageBox.Show(arbLVI.SubItems(0).Text) [ô]Primeira Coluna
MessageBox.Show(arbLVI.SubItems(1).Text) [ô]Segunda Coluna
Segue alguns links pra voce dar uma lida, te ajudará muito
http://www.macoratti.net/vbn_lstv.htm
http://vbtuga.blogspot.com/2008/04/vbnet-implementar-pesquisas-em.html
http://www.portugal-a-programar.org/forum/index.php?topic=49389.0
Espero que ajude, FareBem.
é isso aà amigo. Era isso que eu precisava. Agora, mais uma coisa. Quando clico no botão para excluir dois ou mais registros marcados, demora um pouquinho para excluir. O modo como estou fazendo está correto? Ou a conexão com o BD tem que ser feita antes do For Each, ou antes de verificar se o item está Checked=true?
Até mais.
Até mais.
iria ate falar isso com voce, voce esta conectando e desconectando a cada loop, o normal é abrir antes do loop, ou no meu caso aqui a conexao nos meu programas ficam abertas, mas ai pro seu faça o seguinte, Abra a conexao antes do loop e depois feche ao acabar o loop.
Vlw
Vlw
Valeu pelas explicações, amigo. Me ajudou muito.
Quando eu tiver outras dúvidas postarei, e pode ter certeza de que serão muitas dúvidas.
Até mais.
Quando eu tiver outras dúvidas postarei, e pode ter certeza de que serão muitas dúvidas.
Até mais.
ok, se tiver outras questoes seria melhor abrir outro tópico, se ja resolveu essas aqui pode fechar o tópico.
Abraços
Abraços
Tópico encerrado , respostas não são mais permitidas