Jump to content
rixineves

Pesquisa na datagriview

Recommended Posts

rixineves

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

Share this post


Link to post
Share on other sites
kerplunkboy

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 by thoga31
GeSHi

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.