Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
17/06/09 17:01
growning
Questo è il mio primo post, quindi prima di tutto saluto tutti!

Adesso arriviamo al problema.

Ho un form dove sono presenti un datagridview ed un textbox.

La datagridview prende i dati da una tabella di un db (sqlsrv2k5), che ha 3 colonne:

col1=integer
col2=varchar
col3=varchar
Ora.

Quello che voglio fare è molto semplice (solo che non ci riesco), scrivendo nella TB qualsiasi carattere, devo selezionare la prima riga della DGV con il carattere corrispondente. Cosa che con la col1 già funziona, essendo integer.

Il problema si pone per le colonne varchar, in 2quanto prima di selezionarmi la riga corrispondente, devo scrivere tutto il testo.

Sapete come potrei fare per selezionare la riga corrispondente scrivendo solo la prima lettera? (es col2='ciao' appena scrivo 'c' nella textbox mi seleziona la riga)
aaa
17/06/09 20:41
Jeremy
Ciao.
Se stiamo parlando di come fare una query sql che raggiunga l'obbiettivo che chiedi .... devi usare l'operatore LIKE.
Esempio:
SELECT * FROM TABELLA1 WHERE Col1 LIKE 'C%'
Ovviamente, dovrai sostituire 'C%' con un parametro da valorizzare a runtime con il valore della textbox.
Altrimenti .... se non ho capito ..... dacci qualche info in più su come attualmente filtri i dati.

Ciao
Ultima modifica effettuata da Jeremy 17/06/09 20:42
aaa
18/06/09 7:11
growning
Ciao, attualmente io seleziono una riga così:

For irow As Integer = 0 To DataGridView1.Rows.Count - 1
     If DataGridView1.Item(0, irow).Value = TextBox1.Text Then
          vrow = irow
     End If
DataGridView1.Item(0, vrow).Selected = True
Next
aaa
18/06/09 7:45
Il Totem
If DataGridView1.Item(0, irow).Value = TextBox1.Text.Chars(0) Then


Se ci sono maiuscole/minuscole, usa Char.ToLower per confrontarle case-insensitive.
aaa
18/06/09 8:23
growning
Ciao Totem, il tuo codice funziona perfettamente, seleziono la riga che ha la prima lettera specificata, ma avendo due parole che iniziano con la stessa lettera?
Ho provato a fare una cosa del genere ma owiamente non funziona

 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim des As String
If TextBox1.Text.Length = 1 Then

                    'deseleziono eventuali righe selezionate
                    DataGridView1.ClearSelection()

                    'controllo i valori di tutte le righe della colonna num
                    For irow As Integer = 0 To DataGridView1.Rows.Count - 1
                        des = DataGridView1.Item(1, irow).Value

                        'se sono uguali al valore della tb1
                        If des.Chars(0) = TextBox1.Text.ToUpper Then
                            vrow = irow
                        End If

                        'seleziono l'indice della riga della cella
                        DataGridView1.Item(0, vrow).Selected = True
                    Next
                End If

                If TextBox1.Text.Length = 2 Then
                    For irow As Integer = 0 To DataGridView1.Rows.Count - 1
                        des = DataGridView1.Item(1, irow).Value

                        'se sono uguali al valore della tb1
                        If des.Chars(1) = TextBox1.Text.ToUpper Then
                            vrow = irow
                        End If

                        'seleziono l'indice della riga della cella
                        DataGridView1.Item(0, vrow).Selected = True
                    Next
                End If
End Sub
Ultima modifica effettuata da growning 18/06/09 8:25
aaa
19/06/09 8:14
Il Totem
Perchè non funziona? Non seleziona niente? Dovrebbe selezionarti tutte le celle giuste...
aaa
26/06/09 10:39
growning
Ciao, scusate se sono scomparso.

Postato originariamente da Il Totem:

Perchè non funziona? Non seleziona niente? Dovrebbe selezionarti tutte le celle giuste...


Alla prima lettera mi selezionava la riga giusta, ma alla seconda sballava.

In ogni caso per 'chiudere' il post volevo dirvi che alla fine ho utilizzato (come consigliatomi da Jeremy) un DataReader con query LIKE, il tutto funziona perfettamente con discreta velocità.

Ciao e alla prox!
Ultima modifica effettuata da growning 26/06/09 10:43
aaa