Usuário com melhor resposta
Fazer pesquisa em um dropdownlist ou listbox

Pergunta
-
Olá pessoal, sou estudante na área de desenvolvimento e gostaria de implementar um recurso em minha aplicação em que estou desenvolvendo mas encontro dificuldades. Meu objetivo é buscar um valor dentro de um listbox ou dropdown após ter carregado com um filtro select realizado no banco de dados, isso evitaria que toda vez que desejasse fazer tal pesquisa teria que realizar um novo select assim, uma nova consulta no banco de dados, se este recurso é disponível no gridview ajudaria também, desde já agradeço..
- Movido C. Augusto Proiete [MVP]Moderator quinta-feira, 11 de fevereiro de 2010 23:43 Movido para o fórum apropriado (De:C#)
Respostas
-
Emerson, não entendi como seria uma pesquisa dentro de um dropdownlist.
Eu vou passar um exemplo de um combobox, e você verifica se ajuda:
Após preencher o seu combobox, sete a propriedade DropDownStyle = DropDownList.
Com isso o usuário fica impossibiltado de digitar no combobox, mas ao digitar uma tecla, o combobox vai exibir o primeiro item que inicia com aquele caracter.
Pode ser que te ajude!
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:41
-
vc pode usar o linq to object.... mas mesmo assim se for filtrar os dados é melhor usar uma variavel auxliar para isso
public class MeuForm: Form {
private TipoDados[] CacheDados;
public void meuForm_Load(...) {
this.CacheDados = // Carrega a consulta do banco de dados
this.listBox1.DataSource = this.CacheDados;
}
public void Filtrar(string value) {
this.listBox1.DataSource = this.CacheDados.Where(i => i.PropriedadeDeFiltro == value).ToArray();
}
}
What would Brian Boitano do ?
((2B || !2B) is Question) ?- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
-
Boa tarde!
O comboBox tem uma propriedade que é o auto complete.
Basta setar as seguintes propriedadescomboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
espero ter ajudado- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
-
agora entendi...
com linq da pra fazer tudo isso que voce precisa, e muito mais. Olha so um exemplo:
var resultQuery = from p in db.Produto select new { p.codigo, p.descricao };
var filtroQuery = (from p in resultQuery select new { p.codigo, p.descricao }).Where(n => n.descricao.Contains("AREIA")).FirstOrDefault();
perceba que a primeira query traz codigo e descricao da tabela de produtos...
ja a segunda query está fazendo uma pesquisa na primeira query, onde o produto contem certa descricao...
tenta aprender mais sobre linq, que resolve todos esses problemas de uma maneira bem fácil e rápida!
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
-
na verdade a primeira consulta poderia preencher o seu combobox, e a segunda poderia preencher um textbox, algo do tipo
var resultQuery = from p in db.Produto select new { p.codigo, p.descricao };
combobox1.DataSource = resultQuery;
var filtroQuery = (from p in resultQuery select new { p.codigo, p.descricao }).Where(n => n.descricao.Contains("AREIA")).FirstOrDefault();
textbox1.Text = filtroQuery.descricao.ToString();
entendeu?- Marcado como Resposta EmersonS sexta-feira, 12 de fevereiro de 2010 14:01
- Não Marcado como Resposta EmersonS sexta-feira, 12 de fevereiro de 2010 17:27
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
-
Olá pessoal, obrigado pela ajuda, então, achei interessante a forma que o Daniel demosntrou e irei pesquisar sobre o assunto, mas cheguei de uma forma diferente e para mim mais simples de chegar ao resultado. Como não consegui achar nenhuma função para o pretendido, joguei os valores em um vetor e descobri um método Contains, ele verifica se há este valor dentro das posições do vetor, o valor teste a pesquisar era "João", ficou dessa forma :
string instrucao;
int Qtde=0;
SqlConnection Cn = new SqlConnection(ConfigurationManager.AppSettings["Conexao"]);
instrucao = "SELECT COUNT(*)as Qtde FROM tbl_Cliente";
SqlCommand Cm = new SqlCommand(instrucao, Cn);
Cn.Open();
SqlDataReader Dr = Cm.ExecuteReader();
Dr.Read();
Qtde = Convert.ToInt32(Dr["Qtde"]);
Dr.Close();
Dr = null;
Cm = null;instrucao= "SELECT [Cliente],[Cliente_ID] FROM tbl_Cliente";
Cm = new SqlCommand(instrucao, Cn);
Dr = Cm.ExecuteReader();
DropDownList1.DataSource = Dr;
DropDownList1.DataTextField = "Cliente";
DropDownList1.DataValueField = "Cliente_ID";
DropDownList1.DataBind();
Dr.Close();
Dr = null;
Cn.Close();
Cn = null;
Cm = null;
string[] Valores = new string[Qtde];for (int i = 0; i < Qtde; i++)
{ Valores[i] = DropDownList1.Items[i].ToString(); }
if (Valores.Contains("João"))
{TextBox1.Text = "ESTE VALOR EXISTE";}
else { TextBox1.Text = "NÃO EXISTE VALOR";}- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
Todas as Respostas
-
Emerson, não entendi como seria uma pesquisa dentro de um dropdownlist.
Eu vou passar um exemplo de um combobox, e você verifica se ajuda:
Após preencher o seu combobox, sete a propriedade DropDownStyle = DropDownList.
Com isso o usuário fica impossibiltado de digitar no combobox, mas ao digitar uma tecla, o combobox vai exibir o primeiro item que inicia com aquele caracter.
Pode ser que te ajude!
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:41
-
vc pode usar o linq to object.... mas mesmo assim se for filtrar os dados é melhor usar uma variavel auxliar para isso
public class MeuForm: Form {
private TipoDados[] CacheDados;
public void meuForm_Load(...) {
this.CacheDados = // Carrega a consulta do banco de dados
this.listBox1.DataSource = this.CacheDados;
}
public void Filtrar(string value) {
this.listBox1.DataSource = this.CacheDados.Where(i => i.PropriedadeDeFiltro == value).ToArray();
}
}
What would Brian Boitano do ?
((2B || !2B) is Question) ?- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
-
Boa tarde!
O comboBox tem uma propriedade que é o auto complete.
Basta setar as seguintes propriedadescomboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
espero ter ajudado- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
-
Olá Pessoal, primeiramente muito obrigado por tentarem me ajudar, então o meu objetivo é este, ex :
1.. Fiz minha consulta, trouxe todos os valores de um campo para meu componente.
string
instrucao = "SELECT [Cliente],[Cliente_ID] FROM tbl_Cliente";
SqlConnection Cn = new SqlConnection(ConfigurationManager.AppSettings["Conexao"]);
SqlCommand Cm = new SqlCommand(instrucao, Cn);
Cn.Open();
SqlDataReader Dr = Cm.ExecuteReader();
DropDownList1.DataSource = Dr;
DropDownList1.DataTextField =
"Cliente";
DropDownList1.DataValueField =
"Cliente_ID";
DropDownList1.DataBind();
Dr.Close();
Dr =
null;
Cn.Close();
Cn =
null;
2. Irá aparecer vários clientes, então gostaria de fazer uma pesquisa dentro deste componente sem voltar até o bd com uma consulta de select e verificar se existe um "JOÃO", sabe não sei se é possível mais se alguem souber ou já utilizou ajudaria bastante, acredito que exista uma função para isso não sei, muito obrigado.. -
agora entendi...
com linq da pra fazer tudo isso que voce precisa, e muito mais. Olha so um exemplo:
var resultQuery = from p in db.Produto select new { p.codigo, p.descricao };
var filtroQuery = (from p in resultQuery select new { p.codigo, p.descricao }).Where(n => n.descricao.Contains("AREIA")).FirstOrDefault();
perceba que a primeira query traz codigo e descricao da tabela de produtos...
ja a segunda query está fazendo uma pesquisa na primeira query, onde o produto contem certa descricao...
tenta aprender mais sobre linq, que resolve todos esses problemas de uma maneira bem fácil e rápida!
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
-
Daniel, somente uma dúvida, dei uma olhada sobre linq, é algo de armazenar informações na memória e buscá-las, muito interessante irei aprofundar neste assunto muito bom =D..
Então, nessa sintaxe que você colocou eu substituo os valores de db.Produto, seria o meu DropDownList1? Poís em meu DropDownList1, ele já está carregado! -
na verdade a primeira consulta poderia preencher o seu combobox, e a segunda poderia preencher um textbox, algo do tipo
var resultQuery = from p in db.Produto select new { p.codigo, p.descricao };
combobox1.DataSource = resultQuery;
var filtroQuery = (from p in resultQuery select new { p.codigo, p.descricao }).Where(n => n.descricao.Contains("AREIA")).FirstOrDefault();
textbox1.Text = filtroQuery.descricao.ToString();
entendeu?- Marcado como Resposta EmersonS sexta-feira, 12 de fevereiro de 2010 14:01
- Não Marcado como Resposta EmersonS sexta-feira, 12 de fevereiro de 2010 17:27
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42
-
-
-
Olá pessoal, obrigado pela ajuda, então, achei interessante a forma que o Daniel demosntrou e irei pesquisar sobre o assunto, mas cheguei de uma forma diferente e para mim mais simples de chegar ao resultado. Como não consegui achar nenhuma função para o pretendido, joguei os valores em um vetor e descobri um método Contains, ele verifica se há este valor dentro das posições do vetor, o valor teste a pesquisar era "João", ficou dessa forma :
string instrucao;
int Qtde=0;
SqlConnection Cn = new SqlConnection(ConfigurationManager.AppSettings["Conexao"]);
instrucao = "SELECT COUNT(*)as Qtde FROM tbl_Cliente";
SqlCommand Cm = new SqlCommand(instrucao, Cn);
Cn.Open();
SqlDataReader Dr = Cm.ExecuteReader();
Dr.Read();
Qtde = Convert.ToInt32(Dr["Qtde"]);
Dr.Close();
Dr = null;
Cm = null;instrucao= "SELECT [Cliente],[Cliente_ID] FROM tbl_Cliente";
Cm = new SqlCommand(instrucao, Cn);
Dr = Cm.ExecuteReader();
DropDownList1.DataSource = Dr;
DropDownList1.DataTextField = "Cliente";
DropDownList1.DataValueField = "Cliente_ID";
DropDownList1.DataBind();
Dr.Close();
Dr = null;
Cn.Close();
Cn = null;
Cm = null;
string[] Valores = new string[Qtde];for (int i = 0; i < Qtde; i++)
{ Valores[i] = DropDownList1.Items[i].ToString(); }
if (Valores.Contains("João"))
{TextBox1.Text = "ESTE VALOR EXISTE";}
else { TextBox1.Text = "NÃO EXISTE VALOR";}- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 12 de fevereiro de 2010 17:42