Entra

View Full Version : [VB] Multiselect su ListView


race2
23-01-2003, 11:05
Come posso inserire nel Database 10 righe selezionate contemporaneamente su una ListView con attivato il "MultiSelect=True" ???

cioe':

Seleziono 10 righe e con un solo Invio metto i 10 valori selezionati nel Database.

bsummer
23-01-2003, 12:07
Cioe' inserisci 10 nuovi record ognuno contenente uno dei valori selezionati :confused: ?

Aloha

race2
23-01-2003, 12:50
SI, una riga della ListView in una riga del Database... e cosi via...

ma il tutto in una sola selezione di 10 Item...... non voglio farlo 10 volte.

bsummer
23-01-2003, 14:29
for i = 1 to numero_elementi_selezionati
aggiungi recordset al db
popoli il campo con i dati della i-esima selezione
next i

Per aggiungere un nuovo record guarda la documentazione sul metodo "add" di recordset.

Aloha

cionci
23-01-2003, 14:31
Dipende dal database...
Ad esempio in MySQL :
INSERT INTO tabella VALUES (valore11,....valore1n),(valore21,....valore2n),....(valore91,....valore9n),(valore101,....valore10n)

bsummer
23-01-2003, 14:45
Hai ragione...il fatto e' che ormai sono assuefatto con l'associazione vb->access -> usare adodc -> bla bla bla . Aiuto, esci dalla mia testaaaaaaaaaaaaaaa :muro:

:D

Aloha

cionci
23-01-2003, 14:47
Originally posted by "bsummer"

Aiuto, esci dalla mia testaaaaaaaaaaaaaaa :muro:
:rolleyes: eheh :D

race2
23-01-2003, 16:48
Originally posted by "bsummer"

for i = 1 to numero_elementi_selezionati
aggiungi recordset al db
popoli il campo con i dati della i-esima selezione
next i

Per aggiungere un nuovo record guarda la documentazione sul metodo "add" di recordset.

Aloha

OK, molto chiaro, solo che non so come accedere alla proprieta della ListView, cosa c'e' un metodo CountRows ???

come faccio a iniziare l'estrazione del campo ID dalla riga 25 alla riga 35 ???

la mia ListView la popolo cosi:

Public Sub PopolaClienti()
Try
lwClienti.Items.Clear()
Dim li As ListViewItem
oConn.Open()
Dim comm As New SqlCommand("SELECT * FROM Clienti", oConn)
Dim read As SqlDataReader = comm.ExecuteReader
While read.Read()
li = lwClienti.Items.Add(read("ID"))
li.SubItems.Add(read("Codice_Fiscale"))
li.SubItems.Add(read("Ragione_Sociale"))
li.SubItems.Add(read("###"))
li.SubItems.Add(read("###"))
li.SubItems.Add(read("###"))
li.SubItems.Add(read("###"))
li.SubItems.Add(read("###"))
li.SubItems.Add(read("###"))
li.SubItems.Add(read("###"))
li.SubItems.Add(read("###"))
li.SubItems.Add(read("###"))
End While
oConn.Close()
Catch
oConn.Close()
MessageBox.Show("Si è verificato un errore su: PopoloClienti.", "Errore!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Exit Sub
End Try
End Sub

cionci
23-01-2003, 17:01
lwClienti.SelectedItems ti dovrebbere rendere la lista delle item selezionate...

race2
23-01-2003, 17:10
Cosi funziona !!!

ma mi ripete solamente il primo rigo selezionato per tante volte quanti sono i righi selezionati.....


Dim i As Integer
For i = 1 To lwClienti.SelectedItems.Count
If lwClienti.SelectedItems.Count > 0 Then
MsgBox(lwClienti.SelectedItems.Item(0).Text)
End If
Next

cionci
23-01-2003, 17:18
Devi mettere i al posto di 0 ;)

PS: sul MSDN c'è, io l'ho trovato lì :)

race2
23-01-2003, 17:25
FUNZIONA!!!


Dim i As Integer
For i = 1 To lwClienti.SelectedItems.Count
If lwClienti.SelectedItems.Count > 0 Then
MsgBox(lwClienti.SelectedItems.Item(i - 1).Text)
End If
Next


con questa modifica: MsgBox(lwClienti.SelectedItems.Item(i - 1).Text)