Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andersonas

Pesquisar no DataGridView através de Textbox

Recommended Posts

Pessoal, Bom dia!

 

Estou precisando de umas dicas para resolver o seguinte problema:

tenho uma tela com um DataGridView mostrando alguns registros e gostaria de filtrar os registros na medida que for digitando algo no textbox, como por exemplo: an (mostrar somente os registros iniciados em an) e no caso de limpar o textbox voltar a aparecer todos.

 

Desde já agradeço pela atenção de todos.

 

Anderson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quintelab esse tipo de programação também não me agrada, mas meu cliente impos essa condição. Infelizmente tive que atende-lo dessa forma, mesmo mostrando alternativas.

 

Mesmo assim agradeço e muito pela dica.

Então terei que montar um metodo e passando por parametros a string digitada, certo?

 

Atenciosamente

 

Eu acho pouco viável ir atualizando uma grid. Utilize o evento KeyPress do TextBox a cada letra digitada ele dispara o evento.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Posso não ter entendido muito bem, mas veja se isto ajuda:

 

Public Class Form1

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

		' Cria um DataTable com alguns registos
		Dim dt As New DataTable
		dt.Columns.Add("ID", GetType(Byte)).AutoIncrement = True
		dt.Columns.Add("Description", GetType(String))

		Dim dr As DataRow
		For x As Byte = 0 To 99
			dr = dt.NewRow
			dr("Description") = "Item " & x.ToString.PadLeft(3, "0"c)
			dt.Rows.Add(dr)
		Next

		' Define a tabela como datasource da datagridview
		Me.DataGridView1.DataSource = dt.DefaultView

	End Sub

	' Filtra os resultados com base no campo "Description"
	Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
		Dim dv As DataView = Me.DataGridView1.DataSource
		dv.RowFilter = " Description LIKE '%" & Me.TextBox1.Text & "%'"
		Me.DataGridView1.DataSource = dv
	End Sub

End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

em c# eu faço mais ou menos assim e funciona

 

private void textBox1_TextChanged(object sender, EventArgs e)
		{
			SqlConnection conn = new SqlConnection("Password=mbm;Persist Security Info=True;User ID=sa;Initial Catalog=modelo_redex;Data Source=192.168.0.2\\SQLEXPRESS");	  
			SqlCommand	cmd  = new SqlCommand   ("select * from entidade", conn);

 

		conn.Open();

 

	  DataTable dt = new DataTable();

	  SqlDataAdapter da = new SqlDataAdapter(cmd);

 

	  da.Fill(dt);

	  DataView dv = new DataView(dt);

 

	  dv.RowFilter = "nm_entidade like'" + textBox1.Text + "%'";

	  dataGridView1.DataSource = dv;

	  conn.Close();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei essa mesma ideia em um sistema. Utilizei o sequinte código no evendo do txt e roda perfeitamente.

string strSelect = "SELECT * FROM NomeDaTabela WHERE NomeDaColuna LIKE (@NomeDaColuna)";

using (SqlConnection conn = new SqlConnection(SuaStringDeConexão))
{
   SqlDataAdapter da = new SqlDataAdapter(strSelect, conn);
   //Passagem por parâmetros.
   da.SelectCommand.Parameters.AddWithValue("@NomeDaColuna", SeuTextBoxDeBusca.Text + "%");
   DataSet ds = new DataSet();
   da.Fill(ds, "NomeDaTabela");
   SeuDataGridView.DataSource = ds.Tables["NomeDaTabela"];
}

Se funcionar com você da retorno, por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso vai sobrecarregar o banco, ficar fazendo uma consulta a cada letra digitada.

Se hoje quando você entra na tela você já tem todos os dados, aplique o filtro no dataset e jogue o dataset filtrado na grid. Caso ele apague todo o conteudo, jogue o dataset sem filtro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

em c# eu faço mais ou menos assim e funciona

 

private void textBox1_TextChanged(object sender, EventArgs e)
		{
			SqlConnection conn = new SqlConnection("Password=mbm;Persist Security Info=True;User ID=sa;Initial Catalog=modelo_redex;Data Source=192.168.0.2\\SQLEXPRESS");	  
			SqlCommand	cmd  = new SqlCommand   ("select * from entidade", conn);

 

		conn.Open();

 

	  DataTable dt = new DataTable();

	  SqlDataAdapter da = new SqlDataAdapter(cmd);

 

	  da.Fill(dt);

	  DataView dv = new DataView(dt);

 

	  dv.RowFilter = "nm_entidade like'" + textBox1.Text + "%'";

	  dataGridView1.DataSource = dv;

	  conn.Close();

Nossa fiz um cadastro aqui só para agradecer a estas duas pessoas que sem querer me salvaram a vida. Estava enroscado justamente nisso no sistema aqui da empresa pois o diretor queria que o sistema de busca fosse deste jeito e eu não estava conseguindo fazer e nem achava na na Internet.

 

Obrigado garotas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.