Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Filtrare DatagridView senza database
Forum - C# / VB.NET - [C#] Filtrare DatagridView senza database

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
fosforo (Normal User)
Expert


Messaggi: 302
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 15:12
Lunedì, 04/06/2018
Ciao a tutti.

Ho creato un DatagridView che popolo prendendo il nome e la data di creazione di file in una cartella.
Ora vorrei creare una TextBox che mi aiuti a trovare il Nome File filtrando il DatagridView.

Grazie


Scusate per la figuraccia.
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 451
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 15:54
Lunedì, 04/06/2018
Puoi postare il codice che usi per popolare il datagridView?


"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 302
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 16:30
Lunedì, 04/06/2018
Nel frattempo ho cambiato qualcosina, invece dei file cerco le sottocartelle:

DirectoryInfo directory = new DirectoryInfo(EventiPath);
DirectoryInfo[] directories = directory.GetDirectories();

if (directoryCount != 0)
            {
                /// Read all subfolder in Event folder and put into DataGrid
              
                            // ADD row to dataGridView1
                            this.dataGridView1.Rows.Add(folder.Name, NameEvent, folder.CreationTime.ToString());

                            // Order dataGridView1 by creation time  
                            this.dataGridView1.Sort(this.dataGridView1.Columns[2], ListSortDirection.Descending);
}


Scusate per la figuraccia.
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 451
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 16:49
Lunedì, 04/06/2018
vuoi scrivere nella textBox il pattern con cui cercare la cartella?

Codice sorgente - presumibilmente Plain Text

  1. directory.GetDirectories(TextBox.Text,SearchOption)



Dopo, se vuoi avere nella datagrid solo queste cartelle, a mio avviso la cosa più semplice sarebbe cancellare il datagrid e ripopolarlo con il risultato di quel metodo.

Ultima modifica effettuata da Mikelius il 04/06/2018 alle 16:55


"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 302
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 16:58
Lunedì, 04/06/2018
Grazie Mikelius

Una domanda:
Sto provando cosi:

if (folder.Name == "62")
this.dataGridView1.Rows.Add(folder.Name, NameEvent, folder.CreationTime.ToString());

e funziona.

MA se provo:
if (folder.Name == TextBox.tostring())
this.dataGridView1.Rows.Add(folder.Name, NameEvent, folder.CreationTime.ToString());

Non va.
Forse devo aggiungere dei wildcard?


Scusate per la figuraccia.
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 451
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 17:05
Lunedì, 04/06/2018
Testo quotato

Postato originariamente da fosforo:


MA se provo:
if (folder.Name == TextBox.tostring())
this.dataGridView1.Rows.Add(folder.Name, NameEvent, folder.CreationTime.ToString());




if (folder.Name == TextBox.Text)

Se vuoi il contenuto della textBox (il ToString() è superfluo visto che è già una stringa)

anche se io userei il metodo apposito
Codice sorgente - presumibilmente Plain Text

  1. String.Compare(folder.Name, TextBox.Text )




"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Avatar
Carlo (Member)
Expert


Messaggi: 445
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 18:58
Lunedì, 04/06/2018
Testo quotato

Postato originariamente da fosforo:

Grazie Mikelius

Una domanda:
Sto provando cosi:

if (folder.Name == "62")
this.dataGridView1.Rows.Add(folder.Name, NameEvent, folder.CreationTime.ToString());

e funziona.

MA se provo:
if (folder.Name == TextBox.tostring())
this.dataGridView1.Rows.Add(folder.Name, NameEvent, folder.CreationTime.ToString());

Non va.
Forse devo aggiungere dei wildcard?



Forse non è il tuo caso, ma quando tratti numeri come stringhe, è buona cosa eliminare gli eventuali invisibili spazi, prima e dopo del numero in formato testo, con l'istruzione .Trim.

MA se provo (corretto):
if (folder.Name == TextBox.Text.Trim())
this.dataGridView1.Rows.Add(folder.Name, NameEvent, folder.CreationTime.ToString());

Anche nell'esempio di Mikelius:
String.Compare(folder.Name, TextBox.Text.Trim())

Prova ad inserire nella TextBox " 62", vedrai che con .Trim l'input sarà riconosciuto come "62"

Ultima modifica effettuata da Carlo il 05/06/2018 alle 12:20


In programmazione tutto è permesso
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 302
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 12:49
Martedì, 05/06/2018
Una ulteriore domanda:

se in una textbox non scrivo nulla questo if non funziona e non capisco perché:
if (txtName.ToString().Trim() == "")
…...


Scusate per la figuraccia.
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 451
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 13:37
Martedì, 05/06/2018
Testo quotato

Postato originariamente da fosforo:

Una ulteriore domanda:

se in una textbox non scrivo nulla questo if non funziona e non capisco perché:
if (txtName.ToString().Trim() == "")
…...



nulla non significa stringa vuota. Nulla è nulla, stringa vuota è una stringa senza nessun carattere.
Secondo, txtName è la textBox? se si devi usare la proprietà TEXT. e' quella che contiene il testo del controllo!!!


"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo