none
Como setar valor vazio para um combobox - Consulta LINQ RRS feed

  • Pergunta

  • Vamos as explicações: Tenho um sistema.. Windows.Forms

    Onde eu tenho uma tabela de Veículos com os campos principais (que vão ser usados na consulta)

    Código
    Nome
    Ano
    Cor
    Placa
    Categoria (Tabela Relacionada)
    Montadora (Tabela Relacionada)
    Combustível (Tabela Relacionada)
    Valor
    Cidade (Tabela Relacionada)

    Seguinte... quero fazer uma pesquisa de veículos complexa.. onde o usúario possa escolher apenas um desses campos, 2, 3 ou todos eles para fazer uma busca mais refinada.

    Segue o código da consulta com LINQ ..
    var disponiveis = from vei in dc.Veiculos
                      join cat in Categorias on vei.Categoria equals cat.Codigo
                      join comb in Combustiveis on vei.Combustivel equals com.Codigo
                      join mont in Montadoras on vei.Montadora equals mont.Codigo
                      join cid in Cidades on vei.Cidade equals cid.Codigo
    
    where vei.Nome.Contains (txtNome.Text) && vei.Ano >= Convert.ToInt32 (txtAno.Text) && vei.Cor.Contains (txtCor.Text) && vei.Placa.EndsWith (txtPlaca.Text) && vei.Valor >= Convert.ToDecimal(txtValor.Text) && vei.VeiCat.Equals(cbCategoria.SelectedValue) select new { vei.Codigo, cat.Nome, vei.Nome, vei.Ano, vei.Cor, com.Nome, vei.Placa, mon.Nome, vei.Valor, cid.Nome,};
    Os dados das tabelas relacionadas estão em comboboxes ligados com bindings ...

    Seguinte .. sem colocar os valores dos comboboxes funciona normal, ele filtra pelos campos de texto, estando eles preenchidos ou não.. mas se eu deixar esse código.. é preciso escolher a categoria no combobox senão a busca não funciona.. assim que a categoria é escolhida no combo, a consulta volta ao normal.

    Queria saber se tem algum jeito de jogar um valor vazio no combobox para que se ele não for escolhido, não interfira no filtro

    ou se tem outra forma de fazer essa consulta com os combos. .. já tentei cbCategoria.SelectedText=string.Empty mas não funcionou

    Agradeço desde já
    terça-feira, 8 de setembro de 2009 19:17

Respostas

  • Já Consegui... quebrei a cabeça e deu certo desse modo:

    jogo o valor inicial dos comboboxes como vazio

    cbCategoria.Text = string.Empty;
    cbMontadora.Text = string.Empty;
    cbCombustivel.Text = string.Empty;
    cbCidade.Text = string.Empty;
    Aqui o código final da consulta

    var disponiveis = from vei in dc.Veiculos
                      join cat in Categorias on vei.Categoria equals cat.Codigo
                      join comb in Combustiveis on vei.Combustivel equals com.Codigo
                      join mont in Montadoras on vei.Montadora equals mont.Codigo
                      join cid in Cidades on vei.Cidade equals cid.Codigo
    
                      where vei.Nome.Contains (txtNome.Text)
                      && vei.Ano >= Convert.ToInt32 (txtAno.Text)
                      && vei.Cor.Contains (txtCor.Text)
                      && vei.Placa.EndsWith (txtPlaca.Text)
                      && vei.Valor >= Convert.ToDecimal(txtValor.Text)
                      && cat.Nome.Contains (cbCategoria.Text)
                      && mon.Nome.Contains (cbMontadora.Text)
                      && com.Nome.Contains (cbCombustivel.Text)
                      && cid.Nome.Contains (cbCidade.Text)
    


    • Marcado como Resposta Diego Ferraz quarta-feira, 9 de setembro de 2009 03:51
    quarta-feira, 9 de setembro de 2009 03:50