LISTVIEW COM CHECKBOXES

PERCIFILHO 14/12/2010 10:11:30
#359499
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.
RODRIGOFERRO 14/12/2010 12:55:51
#359516
Resposta escolhida
Basicamente assim.

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...
PERCIFILHO 14/12/2010 13:07:15
#359518
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.
RODRIGOFERRO 14/12/2010 13:51:37
#359523
tente usar o ForEach



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
PERCIFILHO 14/12/2010 14:10:59
#359527
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.
RODRIGOFERRO 14/12/2010 14:20:34
#359529
pra pegar o texto das colunas pegue assim

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.
PERCIFILHO 14/12/2010 14:32:34
#359530
é 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.
RODRIGOFERRO 14/12/2010 14:39:01
#359531
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
PERCIFILHO 14/12/2010 14:50:46
#359534
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.
RODRIGOFERRO 14/12/2010 16:05:03
#359549
ok, se tiver outras questoes seria melhor abrir outro tópico, se ja resolveu essas aqui pode fechar o tópico.

Abraços
Tópico encerrado , respostas não são mais permitidas