rixineves Posted February 5, 2016 at 11:39 AM Report Share #593195 Posted February 5, 2016 at 11:39 AM Bom dia, estou com dificuldade em fazer uma pesquisa numa datagridview. Tenho uma datagridview, a qual importo um ficheiro txt com um botão e preenche a datagridview com as 4 colunas e todos os dados desse txt. No entanto preciso de filtrar esses dados na datagridview através de uma textBox. Ou seja, como na foto abaixo, na textBox queria colocar o "1535570090", e na datagrid aparecia só a linha com esse valor e não todas as linhas Segue o codigo que uso para importar o txt para a datagridview: private void simpleButton1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() != DialogResult.Cancel) { string sLine = ""; try { System.IO.StreamReader FileStream = new System.IO.StreamReader(openFileDialog1.FileName); textBox1.Text = openFileDialog1.FileName; dataGridView1.AllowUserToAddRows = false; sLine = FileStream.ReadLine(); string[] s = sLine.Split(';'); for (int i = 0; i <= s.Count() - 1; i++) { DataGridViewColumn colHold = new DataGridViewTextBoxColumn(); colHold.Name = "col" + System.Convert.ToString(i); colHold.HeaderText = s[i].ToString(); dataGridView1.Columns.Add(colHold); } sLine = FileStream.ReadLine(); while (sLine != null) { dataGridView1.Rows.Add(); for (int i = 0; i <= s.Count() - 1; i++) { s = sLine.Split(';'); dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[i].Value = s[i].ToString(); } sLine = FileStream.ReadLine(); } FileStream.Close(); } catch (Exception err) { System.Windows.Forms.MessageBox.Show("Error" + err.Message, "Program Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } se me puderem ajudar, agradeço. Cumprimentos Ricardo Neves Cumprimentos Ricardo Neves Link to comment Share on other sites More sharing options...
kerplunkboy Posted February 16, 2016 at 07:30 PM Report Share #593598 Posted February 16, 2016 at 07:30 PM (edited) Bem, uma pesquisa em um DataGridView depende de certa maneira ao modo como o preencheu. O ideal seria que usasse uma List<T> para tal. No seu caso, seu ficheiro possui 4 campos, então crie uma classe que contenha as tais 4 propriedades, assim: public class Pessoa { public string Nome { get; set; } public string Idade { get; set; } public int Altura { get; set; } } Ao ler o ficheiro, preencha os dados em instâncias da entidade criada acima: List<Pessoa> pessoas = new List<Pessoa>(); LOOP das linhas do seu ficheiro Pessoa pes = new Pessoa(); pes.Nome = dadosdoficheiro_nome; pes.Idade = dadosdoficheiro_idade; pes.Altura = dadosdoficheiro_altura; pessoas.Add(pessoa); FIM Com a lista preenchida, podes perfeitamente passá-la para a propriedade DataSource do seu DataGridView: dataGridView1.DataSource = pessoas; Isso preencherá de forma automática o seu grid com os dados colhidos do ficheiro. Com isso terá uma facilidade muito maior de fazer o que queres, pois assim como os dados foram passados para o DataSource do grid, eles podem ser pegos de volta e procurados nele com o uso de uma expressão lambda: List<Pessoa> pessoasGrid = dataGridView1.DataSource; List<Pessoa> pessoasProcuradas = pessoasGrid.Where(p => p.Nome == txtNome.Text); dataGridView1.DataSource = pessoasProcuradas; Neste ponto, terás o grid preenchido com pessoas que se enquadrem no critério procurado. Cabe aqui o uso da criatividade também, se quiser manter os dados no grid e apenas ressaltar ou posicionar o cursor no grid de acordo com o critério, pode-se também fazê-lo: int indiceLinha = dataGridView1.FindIndex(p => p.Nome == txtNome.Text); dataGridView1.Rows(indiceLinha).Selected = true; Se quiser aprender sobre esse e vários outros assuntos relativos à programação orientada à objetos, aceda meu canal no youtube e inscreva-se nele para ter novas dicas todos os dias! Edited February 16, 2016 at 09:16 PM by thoga31 GeSHi Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now