none
selecionar no checkbox para filtrar datagridview c# RRS feed

  • Pergunta

  • ola pessoal

    eu tenho um datagridview que recebe informações de outro grid.

    na coluna 04 ele tem estas informaçoes por padrao.

    o que eu quero fazer.

    se o usuario selecionar no checkbox ele filtraria o datagridview.

    como eu faço isso?

    abaixo os itens para selecionar.

    Troca de Óleo Motor
    Troca PNEU
    Troca Disco Freio
    Troca Pastilha Freio
    Outros

    sábado, 31 de março de 2012 18:03

Respostas

  • ola pessoal

    Fernando em especial agradeço a paciencia.

    mudei algumas coisas  e deu certo.

    abaixo o codigo que usei. encontrei no site do Macoratti.NET e com algumas adaptaçoes deu certo.

    usei um combobox no lugar do listbox;

    //no inicio do form

    BindingSource bs = new BindingSource();

    //no load do form

    negocio.PreencherDataGridManutencao(dataGridView1);
                
                SqlConnection conexao = new SqlConnection( aki sua conexao)

                try
                {
                    //abre a conexão
                    conexao.Open();

                    //define o comando sql para selecionar os dados das tabela Clientes
                    SqlCommand sql = new SqlCommand("SELECT * from tb_Manutencao", conexao);
                    //cria um adapter para preencher um dataset
                    SqlDataAdapter da = new SqlDataAdapter(sql);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    dataGridView1.DataSource = ds;
                    //atribui o dataset ao DataSource do BindingSource e 
                    //define a propriedade DataMember
                    bs.DataSource = ds;
                    bs.DataMember = ds.Tables[0].TableName;
                    //Atribui o BindingSource ao DataGridView
                    dataGridView1.DataSource = bs;
                }
                catch (Exception)
                {
                    MessageBox.Show("erro ao obter os dados.");
                }
                finally
                {
                    conexao.Close();
                }
            }

    // no botao de pesquisa

     private void button2_Click(object sender, EventArgs e)
            {
                int id = Convert.ToInt32(txtIdveiculo.Text);
                bs.Filter = "idVeiculo= " + id + " AND tipoManut like  "+ tipoManutComboBox.Text + "";
            }

    valeu!!!!!!!!!!!!

    • Marcado como Resposta Marcos_Roberto terça-feira, 3 de abril de 2012 17:51
    terça-feira, 3 de abril de 2012 17:50

Todas as Respostas

  • Olá Marcos,

    Tudo beleza?

    Para responder esta pergunta precisamos saber o modo como vc esta acessando sua base de dados, via ADO.Net, EF, SQLDatasource.

    Assim podemos lhe dizer como passar os parâmetros para a sua consulta.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    domingo, 1 de abril de 2012 13:37
    Moderador
  • Olá Marcos,

    Tudo beleza?

    Para responder esta pergunta precisamos saber o modo como vc esta acessando sua base de dados, via ADO.Net, EF, SQLDatasource.

    Assim podemos lhe dizer como passar os parâmetros para a sua consulta.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    ola Fernando.

    com a minha duvida anterior voce me ajudou e deu certinho.... obrigado.

    veja só:

    tenho um datagridview e estou filtrando ele diretamente do BD SQL.

    usei um combobox e funciona certinho.

    {
                    if (cbmFiltrar2.Text == "IdVeiculo")
                    {
                        negocio.TipoMan = txtPesquisar1.Text;
                        negocio.ConsultarTipoMan(dataGridView1);

    o que eu preciso fazer é o seguinte:

    o usuario filtra o combobox que é o codigo acima e dai filtraria novamente os resultados obtidos deste primeiro filtro.

    exemplo: se usar IDveiculo no combobox ele precisa colocar o ID no txtPesquisar1.text  pressionar o butao e aparece no datagridview tudo o que foi feito de registros para este veiculo e neste momento quero ter a alternativa de filtrar estes resultados novamente direto no datagridview sem acessar o banco novamente.

    pensei em colocar um checkbox no form para o cliente escolher a opção e relacionar a coluna 4 onde está a minha intenção de segundo filtro ou poderia ser um novo combobox.

    tentei este código e nao deu certo ainda.

    private void remove(ArrayList sua_lista, DataGridViewCellEventArgs e)
            {
                if (checkedListBox1.SelectedValue.ToString)
                  sua_lista.Remove(dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString());
            }

    imagino ser mais facil filtrar diretamente no datagridview sem usar datasource para ir ao banco de dados novamente.

    o que voce acha?

    domingo, 1 de abril de 2012 13:51
  • Olá Marcos,

    Isso pode ser feito perfeitamente :)

    O que preciso saber é como vc esta atribuindo os dados para seu datagrid. Vc esta utilizando ASP.Net?

    Dica: se for asp.net, dependendo da quantidade de registros que vc estiver trabalhando, é mto menos custoso acessar novamente o banco de dados do que tomar memória do seu servidor web. Vc deve para isso analisar a arquitetura de sua aplicação, quantos recursos de banco de dados vc tem, e quanto de servidor iis.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    domingo, 1 de abril de 2012 14:17
    Moderador
  • Olá Marcos,

    Isso pode ser feito perfeitamente :)

    O que preciso saber é como vc esta atribuindo os dados para seu datagrid. Vc esta utilizando ASP.Net?

    Dica: se for asp.net, dependendo da quantidade de registros que vc estiver trabalhando, é mto menos custoso acessar novamente o banco de dados do que tomar memória do seu servidor web. Vc deve para isso analisar a arquitetura de sua aplicação, quantos recursos de banco de dados vc tem, e quanto de servidor iis.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    ola Fernando.

    dei uma saidinha e retornei somente  agora.

    veja só.

    criei uma classe de conexao ao BD SQL e preparei o caminho para a carga do datagridview.

    public void Consultar(DataGridView dgv, string Sql)
            {
                cmd = new SqlCommand(Sql, conn);conn.Open();

               cmd.CommandType = CommandType.Text;         

                SqlDataAdapter da = new SqlDataAdapter(cmd);          
                DataTable cliente = new DataTable();            
                da.Fill(cliente);
                //Define a Fonte de dados do DataGridView
                dgv.DataSource = cliente;
                //Fechar a conexão com o banco de dados
                conn.Close();

    aqui outra classe onde tenho todos os detalhes:

    public void ConsultarIdVei(DataGridView dgv)
            {
                dal.Consultar(dgv, "SELECT * FROM tb_Manutencao WHERE idVeiculo= " + IDVeic + "");

    e no botao pesquisar coloquei este aqui.

    {
                    if (cbmFiltrar2.Text == "IdVeiculo")
                    {
                        negocio.TipoMan = txtPesquisar1.Text;
                        negocio.ConsultarTipoMan(dataGridView1);

    ai ele preenche o datagridview tudo feito em C# express

    domingo, 1 de abril de 2012 21:31
  • Olá Marcos,

    Veja se isto lhe ajuda:

    public void Consultar(DataGridView dgv, string Sql)
    {
    
    string filter = string.Empty;
    DataView view;
    
    
    if (Session["table"] == null) {
    
    	cmd = new SqlCommand(Sql, conn);conn.Open();
     
    	cmd.CommandType = CommandType.Text;         
     
    	SqlDataAdapter da = new SqlDataAdapter(cmd);          
    	DataTable cliente = new DataTable();            
    	da.Fill(cliente);
    
    	Session["table"] = cliente;
    }
    
    view = ((DataTable)Session["table"]).DefaultView;
    
    
    
    if (checkBox1.IsChecked)
    {
    	filter = "NomeDoSeuCampo = 'Algum valor'" // Vc pode utilizar a sintaxe T-SQL aqui...
    }
    
    view.RowFilter = filter;
    
    //Define a Fonte de dados do DataGridView
    dgv.DataSource = ((DataTable)Session["table"]).DefaultView;
    //Fechar a conexão com o banco de dados
    conn.Close();
    }

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    domingo, 1 de abril de 2012 22:47
    Moderador
  • Olá Marcos,

    Veja se isto lhe ajuda:

    public void Consultar(DataGridView dgv, string Sql)
    {
    
    string filter = string.Empty;
    DataView view;
    
    
    if (Session["table"] == null) {
    
    	cmd = new SqlCommand(Sql, conn);conn.Open();
     
    	cmd.CommandType = CommandType.Text;         
     
    	SqlDataAdapter da = new SqlDataAdapter(cmd);          
    	DataTable cliente = new DataTable();            
    	da.Fill(cliente);
    
    	Session["table"] = cliente;
    }
    
    view = ((DataTable)Session["table"]).DefaultView;
    
    
    
    if (checkBox1.IsChecked)
    {
    	filter = "NomeDoSeuCampo = 'Algum valor'" // Vc pode utilizar a sintaxe T-SQL aqui...
    }
    
    view.RowFilter = filter;
    
    //Define a Fonte de dados do DataGridView
    dgv.DataSource = ((DataTable)Session["table"]).DefaultView;
    //Fechar a conexão com o banco de dados
    conn.Close();
    }

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    fernando 

    ta quase.

    tem umas coisinhas pra alinhar.

    session nao está sendo reconhecido. o que ele significa no contexto?

    no if (checkBox1.IsChecked) ele nao reconhece o IsChecked.

    me desculpe pela ignorancia.... qd vc fala em usa T-SQL seria mais ou menos por aqui? "SELECT * FROM tb_Manutencao WHERE idVeiculo= " + IDVeic + ""
     valeu a paciencia!!

    domingo, 1 de abril de 2012 23:02
  • Olá grande Marcos,

    Não se preocupe :)

    Nosso papel é ajudar a comunidade .Net :)

    Com relação a session: Sua aplicação é windows forms ou asp.net?

    Com relação ao IsCheked: Pode substituir por "Checked" ao invés de "IsChecked" (acho que confundi com a propriedade do Silverlight hehe)

    Com relação ao T-SQL: sim, no caso vc irá colocar desta maneira:

    if (checkBox1.Checked)
    {
    	filter = "idVeiculo = " + IDVeic.ToString();
    }
    

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    domingo, 1 de abril de 2012 23:22
    Moderador
  • Olá grande Marcos,

    Não se preocupe :)

    Nosso papel é ajudar a comunidade .Net :)

    Com relação a session: Sua aplicação é windows forms ou asp.net?

    Com relação ao IsCheked: Pode substituir por "Checked" ao invés de "IsChecked" (acho que confundi com a propriedade do Silverlight hehe)

    Com relação ao T-SQL: sim, no caso vc irá colocar desta maneira:

    if (checkBox1.Checked)
    {
    	filter = "idVeiculo = " + IDVeic.ToString();
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    estou usando windows forms

    o checked  nao é possivel usar, está como CheckedIndices ou  CheckedItems, entao deve ser o ultimo.

    valeu a força.

    domingo, 1 de abril de 2012 23:35
  • Olá Marcos,

    Pensei que sua aplicação era ASP.Net, por isso o lance das session...

    Essa provavelmente é a implementação certa:

    // Apributo local e privado para armazenar o datatable
    private DataTable _table;
    
    public void Consultar(DataGridView dgv, string Sql)
    {
    
    string filter = string.Empty;
    DataView view;
    
    
    if ( _table == null) {
    
    	cmd = new SqlCommand(Sql, conn);conn.Open();
     
    	cmd.CommandType = CommandType.Text;         
     
    	SqlDataAdapter da = new SqlDataAdapter(cmd);          
    	DataTable cliente = new DataTable();            
    	da.Fill(cliente);
    
    	 _table = cliente;
    }
    
    view =  _table.DefaultView;
    
    CheckBox checkBox1;
    
    if (checkedListBox1.CheckedItems.Count() > 0)
    {
    checkBox1 = checkedListBox1.CheckedItems[0];
    
    if (checkBox1.IsChecked)
    {
    	filter = "NomeDoSeuCampo = 'Algum valor'" // Vc pode utilizar a sintaxe T-SQL aqui...
    }
    }
    
    view.RowFilter = filter;
    
    //Define a Fonte de dados do DataGridView
    dgv.DataSource =  _table.DefaultView;
    //Fechar a conexão com o banco de dados
    conn.Close();
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    domingo, 1 de abril de 2012 23:45
    Moderador
  • Olá Marcos,

    Pensei que sua aplicação era ASP.Net, por isso o lance das session...

    Essa provavelmente é a implementação certa:

    // Apributo local e privado para armazenar o datatable
    private DataTable _table;
    
    public void Consultar(DataGridView dgv, string Sql)
    {
    
    string filter = string.Empty;
    DataView view;
    
    
    if ( _table == null) {
    
    	cmd = new SqlCommand(Sql, conn);conn.Open();
     
    	cmd.CommandType = CommandType.Text;         
     
    	SqlDataAdapter da = new SqlDataAdapter(cmd);          
    	DataTable cliente = new DataTable();            
    	da.Fill(cliente);
    
    	 _table = cliente;
    }
    
    view =  _table.DefaultView;
    
    CheckBox checkBox1;
    
    if (checkedListBox1.CheckedItems.Count() > 0)
    {
    checkBox1 = checkedListBox1.CheckedItems[0];
    
    if (checkBox1.IsChecked)
    {
    	filter = "NomeDoSeuCampo = 'Algum valor'" // Vc pode utilizar a sintaxe T-SQL aqui...
    }
    }
    
    view.RowFilter = filter;
    
    //Define a Fonte de dados do DataGridView
    dgv.DataSource =  _table.DefaultView;
    //Fechar a conexão com o banco de dados
    conn.Close();
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    Fernando

    tem um probleminha aqui nesta parte:

     if (checkedListBox1.CheckedItems.Count() > 0)  não tem uma definição para count e nenhum método ou extrensão 'count'.
                {
                    checkBox1= checkedListBox1.CheckedItems[0]; não é possivel converter explicitamente 'objeto' em System...... precisa de cast?


                    if (checkBox1.CheckedItems) checkbox não contem uma definição para .CheckedItems
                    {

    esta parte presumo que esteja correta.      filter = "IdVeiculo = " + negocio.IDVeic.ToString();

    o que voce me diz ?

    tentei colocar  checkBox1.text =CheckedItems.Count.ToString     mas tb nao deu certo.

    eu ja andei neste caminho anteriormente e "enroscou" no mesmo ponto que coloquei acima.


    segunda-feira, 2 de abril de 2012 00:10
  • Olá Marcos,

    Tudo beleza?

    Vc tem mais de um checkbox no seu formulário? Vc poderia substitutir seu checked List Box Items por Checkbox no seu formulário?

    Se sim, a implementação poderá ficar assim:

    // Apributo local e privado para armazenar o datatable
    private DataTable _table;
    
    public void Consultar(DataGridView dgv, string Sql)
    {
    
    string filter = string.Empty;
    DataView view;
    
    
    if ( _table == null) {
    
    	cmd = new SqlCommand(Sql, conn);conn.Open();
     
    	cmd.CommandType = CommandType.Text;         
     
    	SqlDataAdapter da = new SqlDataAdapter(cmd);          
    	DataTable cliente = new DataTable();            
    	da.Fill(cliente);
    
    	 _table = cliente;
    }
    
    view =  _table.DefaultView;
    
    if (checkBoxNomeDoSeuCheckBox.IsChecked)
    {
    	filter = "NomeDoSeuCampo = 'Algum valor'" // Vc pode utilizar a sintaxe T-SQL aqui...
    }
    
    view.RowFilter = filter;
    
    //Define a Fonte de dados do DataGridView
    dgv.DataSource =  _table.DefaultView;
    //Fechar a conexão com o banco de dados
    conn.Close();
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    segunda-feira, 2 de abril de 2012 00:26
    Moderador
  • Olá Marcos,

    Tudo beleza?

    Vc tem mais de um checkbox no seu formulário? Vc poderia substitutir seu checked List Box Items por Checkbox no seu formulário?

    Se sim, a implementação poderá ficar assim:

    // Apributo local e privado para armazenar o datatable
    private DataTable _table;
    
    public void Consultar(DataGridView dgv, string Sql)
    {
    
    string filter = string.Empty;
    DataView view;
    
    
    if ( _table == null) {
    
    	cmd = new SqlCommand(Sql, conn);conn.Open();
     
    	cmd.CommandType = CommandType.Text;         
     
    	SqlDataAdapter da = new SqlDataAdapter(cmd);          
    	DataTable cliente = new DataTable();            
    	da.Fill(cliente);
    
    	 _table = cliente;
    }
    
    view =  _table.DefaultView;
    
    if (checkBoxNomeDoSeuCheckBox.IsChecked)
    {
    	filter = "NomeDoSeuCampo = 'Algum valor'" // Vc pode utilizar a sintaxe T-SQL aqui...
    }
    
    view.RowFilter = filter;
    
    //Define a Fonte de dados do DataGridView
    dgv.DataSource =  _table.DefaultView;
    //Fechar a conexão com o banco de dados
    conn.Close();
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    fernando

    até posso subtituir, o unico problema seria ter que colocar um checkBox para cada item, mas isso é só um detalhe que eu posso acertar.... coloco 5 checkBox e o usuario seleciona e pronto.

    ficou desta forma:

    view = _table.DefaultView;


                if (checkBox1.Checked) aqui mudei o IsChecked por Checked, pois o Is nao dava certo. pode ser?
                {
                    filter = "IdVeiculo = " + negocio.IDVeic.ToString();
                }
                view.RowFilter = filter;

    na suposição que tudo esteja correto agora eu devo chamar algo la no meu botao pesquisar onde eu ja chamo o IdVeiculo.

                               

    private void PesquisaCriterios_Click(object sender, EventArgs e)
            {
                try
                {

                    if (cbmFiltrar2.Text == "IDVeículo")
                    {
                        negocio.IDVeic = int.Parse(txtPesquisar1.Text);
                        negocio.ConsultarIdVei(dataGridView1);}

    é isso ai?               

    segunda-feira, 2 de abril de 2012 00:47
  • Isso ae ;)

    Parece tudo certinho ;)

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    segunda-feira, 2 de abril de 2012 00:56
    Moderador
  • Isso ae ;)

    Parece tudo certinho ;)

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    pior que não "funfo".

    caramba... o que na teoria é tao simples na pratica é tao complicado.

    se eu ja tenho as informaçoes no datagridview1 é tao complicado associar o checkedListBox ou checkBox....

    neste momento estou párado, sem saida.

    vou pensar um pouco mais.

    segunda-feira, 2 de abril de 2012 01:10
  • Olá Marcos,

    Posta o código do seu método que eu dou uma arrumada se necessário :)

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    segunda-feira, 2 de abril de 2012 01:14
    Moderador
  • fernando

    vou colocar em detalhes pra voce tentar entender.

    aqui é minha classe conexao:

    class conexao

      {   

            public static string conectar = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ControleFrota.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";       
            SqlConnection conn = new SqlConnection(conectar);      
            SqlCommand cmd = null;
            public void ComandoSQL(string Sql)
            {          
                conn.Open();          
                cmd = new SqlCommand(Sql, conn);         
                cmd.ExecuteNonQuery();           
                conn.Close();
            }
            public void Consultar(DataGridView dgv, string Sql)
            {
                cmd = new SqlCommand(Sql,conn);

               conn.Open();         

                cmd.CommandType = CommandType.Text;
                SqlDataAdapter da = new SqlDataAdapter(cmd);            
                DataTable cliente = new DataTable();      
               da.Fill(cliente);                      dgv.DataSource = cliente;
                
                conn.Close();

    segunda-feira, 2 de abril de 2012 01:20
  • aqui eu tenho uma classe com as string, deixei somente da tb_Manutencao.

    namespace ControleFrotas.userManut
    {
        class usuarioManutencao
        {
      
             //campo tb_manutenção
            private int idManu;
            private int idVei;
            private int idForn;
            private int idCond;
            private string tipoMan;
            private string km;
            private string obs;
            private string valor;
            private string diaCaMan;
            private string cadPorMa;
            
           
            //string tb_Manutenção
            public int IDManu
            {
                get { return idManu; }
                set { idManu = value; }
            }
            public int IDVeic
            {
                get { return idVei; }
                set {idVei = value; }
            }
            public int IDFor
            {
                get { return idForn; }
                set { idForn = value; }
            }
            public int IDCon
            {
                get { return idCond; }
                set { idCond = value; }
            }
            public string TipoMan
            {
                get { return tipoMan; }
                set { tipoMan = value; }
            }
            public string KM
            {
                get { return km; }
                set { km = value; }
            }
            public string OBS
            {
                get { return obs; }
                set { obs = value; }
            }
            public string Valor
            {
                get { return valor; }
                set { valor = value; }
            }
            public string DiaCadMan
            {
                get { return diaCaMan; }
                set { diaCaMan = value; }
            }
            public string CadPorMan


            {
                get { return cadPorMa; }
                set { cadPorMa = value; }
            }
           
            conexao dal = new conexao();
          
             //Consultar por IDmanutenção
            public void ConsultarIdMan(DataGridView dgv)
            {
                dal.Consultar(dgv, "SELECT * FROM tb_Manutencao WHERE idManutencao= " + IDManu + "");
            }


    segunda-feira, 2 de abril de 2012 01:25
  • agora vou no form:

    uma string no inicio:

    usuarioManutencao negocio = new usuarioManutencao();

    no load preenche o datagridview:

     public void Form1_Load(object sender, EventArgs e)
            {            
                negocio.PreencherDataGridManutencao(tb_ManutencaoDataGridView);

    e aqui o botao pesquisar que retorna as informações em um novo datagridview1.

            private void PesquisaCriterios_Click(object sender, EventArgs e)
            {
                //seleciona o tabcontrol
                tabControl1.SelectedTab = tabControl1.TabPages[3];
                try
                {
                    if (cbmFiltrar2.Text == "Tipo de Manutenção")
                    {
                        negocio.TipoMan = txtPesquisar1.Text;
                        negocio.ConsultarTipoMan(dataGridView1);
                    }
                    if (cbmFiltrar2.Text == "IDManutenção")
                    {
                        negocio.IDManu = int.Parse(txtPesquisar1.Text);
                        negocio.ConsultarIdMan(dataGridView1);
                    }
                    if (cbmFiltrar2.Text == "IDVeículo")
                    {
                        negocio.IDVeic = int.Parse(txtPesquisar1.Text);
                        negocio.ConsultarIdVei(dataGridView1);
                    }
                    if (cbmFiltrar2.Text == "IDFornecedor")
                    {
                        negocio.IDFor = int.Parse(txtPesquisar1.Text);
                        negocio.ConsultarIdFor(dataGridView1);
                    }
                    if (cbmFiltrar2.Text == "IDCondutor")
                    {
                        negocio.IDCon = int.Parse(txtPesquisar1.Text);
                        negocio.ConsultarIdCon(dataGridView1);
                    }
                    if (cbmFiltrar2.Text == "")
                    {
                        negocio.PreencherDataGridManutencao(dataGridView1);
                        this.tb_ManutencaoBindingSource.Position = this.tb_ManutencaoBindingSource.Count - 1;
                        {                        
                        }
                    }
                }
                catch
                {
                    MessageBox.Show("Obrigado Informar Parâmetro",
                        "Aviso de Segurança",
                        MessageBoxButtons.OK,
                       MessageBoxIcon.Information);
                    return;
                    {
                    }
                }
            }

    espero que voce consiga me ajudar.

    segunda-feira, 2 de abril de 2012 01:30
  • Olá Marcos,

    Tem como postar o código do método que estavamos discutindo?

    Preciso ver como ele esta implementado no seu projeto.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    segunda-feira, 2 de abril de 2012 01:33
    Moderador
  •  private DataTable _table;
            public void Consulta(DataGridView dgv, string Sql)
            {
                string filter = string.Empty;
                DataView view;
                if (_table == null)
                {
                    cmd = new SqlCommand(Sql, conn); conn.Open();
                    cmd.CommandType = CommandType.Text;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable cliente = new DataTable();
                    da.Fill(cliente);
                    _table = cliente;
                }


                view = _table.DefaultView;


                if (checkBox1.Checked)
                {
                    filter = "IdVeiculo = " + negocio.IDVeic.ToString();
                }
                view.RowFilter = filter;
                //Define a Fonte de dados do DataGridView
                dgv.DataSource = _table.DefaultView;
                //Fechar a conexão com o banco de dados
                conn.Close();
    segunda-feira, 2 de abril de 2012 01:38
  • Veja se assim funciona:

    private DataTable _table;
             public void Consulta(DataGridView dgv, string Sql)
             {
                 string filter = string.Empty;
                 DataView view;
                 if (_table == null)
                 {
                     cmd = new SqlCommand(Sql, conn); conn.Open();
                     cmd.CommandType = CommandType.Text;
                     SqlDataAdapter da = new SqlDataAdapter(cmd);
                     DataTable cliente = new DataTable();
                     da.Fill(cliente);
                     _table = cliente;
                 }
     
    
                view = _table.DefaultView;
     
    
                if (checkBox1.Checked)
                 {
                     filter = "IdVeiculo = " + negocio.IDVeic.ToString();
                 }
                 view.RowFilter = filter;
                 //Define a Fonte de dados do DataGridView
                 dgv.DataSource = view;
                 //Fechar a conexão com o banco de dados
                 conn.Close();

    O que não esta funcionando é o filtro ou toda a consulta?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    segunda-feira, 2 de abril de 2012 01:42
    Moderador
  • Veja se assim funciona:

    private DataTable _table;
             public void Consulta(DataGridView dgv, string Sql)
             {
                 string filter = string.Empty;
                 DataView view;
                 if (_table == null)
                 {
                     cmd = new SqlCommand(Sql, conn); conn.Open();
                     cmd.CommandType = CommandType.Text;
                     SqlDataAdapter da = new SqlDataAdapter(cmd);
                     DataTable cliente = new DataTable();
                     da.Fill(cliente);
                     _table = cliente;
                 }
     
    
                view = _table.DefaultView;
     
    
                if (checkBox1.Checked)
                 {
                     filter = "IdVeiculo = " + negocio.IDVeic.ToString();
                 }
                 view.RowFilter = filter;
                 //Define a Fonte de dados do DataGridView
                 dgv.DataSource = view;
                 //Fechar a conexão com o banco de dados
                 conn.Close();

    O que não esta funcionando é o filtro ou toda a consulta?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    ola Fernando.

    ele não da erro algum e se eu seleciono o checkedbox não muda nada.

    passei a noite pensando em como fazer e me surgiu uma ideia.

    se eu ja tenho um filtro que funciona eu nao poderia colocar um 2º combobox?

    ficaria assim:

     if (cbmFiltrar2.Text == "IDVeículo") este é o filtro que funciona hoje.

    if (combobox2.text=="pneu"&&"oleo")  esta seria a ideia de colocar o segundo combobox que ao selecionar o "IDVeiculo" e ideintificar ele no txtpesquisar1.text precisaria necessariamente selecionar algo no combobox que pretendo colocar agora.

                 {

                       negocio.IDVeic = int.Parse(txtPesquisar1.Text);

                        negocio.ConsultarIdVei(dataGridView1);

    acho q fica mais facil.

    o que vc acha?


    segunda-feira, 2 de abril de 2012 12:01
  • Olá Marcos,

    Acho que não será necessário.

    Adicionei uma linha, veja se ajuda:

    private DataTable _table;
             public void Consulta(DataGridView dgv, string Sql)
             {
                 string filter = string.Empty;
                 DataView view;
                 if (_table == null)
                 {
                     cmd = new SqlCommand(Sql, conn); conn.Open();
                     cmd.CommandType = CommandType.Text;
                     SqlDataAdapter da = new SqlDataAdapter(cmd);
                     DataTable cliente = new DataTable();
                     da.Fill(cliente);
                     _table = cliente;
                 }
     
    
                view = _table.DefaultView;
     
    
                if (checkBox1.Checked)
                 {
                     filter = "IdVeiculo = " + negocio.IDVeic.ToString();
                 }
                 view.RowFilter = filter;
                 view.RowStateFilter = DataViewRowState.ModifiedCurrent;
                 //Define a Fonte de dados do DataGridView
                 dgv.DataSource = view;
                 //Fechar a conexão com o banco de dados
                 conn.Close();

    Talvez o RowStateFilter que adicionei resolva :)

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    segunda-feira, 2 de abril de 2012 12:20
    Moderador
  • Olá Marcos,

    Acho que não será necessário.

    Adicionei uma linha, veja se ajuda:

    private DataTable _table;
             public void Consulta(DataGridView dgv, string Sql)
             {
                 string filter = string.Empty;
                 DataView view;
                 if (_table == null)
                 {
                     cmd = new SqlCommand(Sql, conn); conn.Open();
                     cmd.CommandType = CommandType.Text;
                     SqlDataAdapter da = new SqlDataAdapter(cmd);
                     DataTable cliente = new DataTable();
                     da.Fill(cliente);
                     _table = cliente;
                 }
     
    
                view = _table.DefaultView;
     
    
                if (checkBox1.Checked)
                 {
                     filter = "IdVeiculo = " + negocio.IDVeic.ToString();
                 }
                 view.RowFilter = filter;
                 view.RowStateFilter = DataViewRowState.ModifiedCurrent;
                 //Define a Fonte de dados do DataGridView
                 dgv.DataSource = view;
                 //Fechar a conexão com o banco de dados
                 conn.Close();

    Talvez o RowStateFilter que adicionei resolva :)

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    não deu Fernando.

    roda normal, porem não filtra nada.

    segunda-feira, 2 de abril de 2012 12:37
  • Olá Marcos,

    Acho que não será necessário.

    Adicionei uma linha, veja se ajuda:

    private DataTable _table;
             public void Consulta(DataGridView dgv, string Sql)
             {
                 string filter = string.Empty;
                 DataView view;
                 if (_table == null)
                 {
                     cmd = new SqlCommand(Sql, conn); conn.Open();
                     cmd.CommandType = CommandType.Text;
                     SqlDataAdapter da = new SqlDataAdapter(cmd);
                     DataTable cliente = new DataTable();
                     da.Fill(cliente);
                     _table = cliente;
                 }
     
    
                view = _table.DefaultView;
     
    
                if (checkBox1.Checked)
                 {
                     filter = "IdVeiculo = " + negocio.IDVeic.ToString();
                 }
                 view.RowFilter = filter;
                 view.RowStateFilter = DataViewRowState.ModifiedCurrent;
                 //Define a Fonte de dados do DataGridView
                 dgv.DataSource = view;
                 //Fechar a conexão com o banco de dados
                 conn.Close();

    Talvez o RowStateFilter que adicionei resolva :)

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    não deu Fernando.

    roda normal, porem não filtra nada.

    Ola Fernando

    Parti para outra ideia.

    if (cbmFiltrar2.Text == "IDVeículo")
                        if (comboBox1.Text == textBox1.Text) adicionei.... mas ainda não está bem alinhado.
                      {
                        negocio.IDVeic = int.Parse(txtPesquisar1.Text);
                        negocio.TipoMan = textBox1.Text; adicionei.... mas ainda não está bem alinhado.
                        negocio.ConsultarIdVei(dataGridView1);

    ta faltando alguma coisinha que ainda não descobri.

    tens alguma ideia?

    segunda-feira, 2 de abril de 2012 13:37
  • ola pessoal

    Fernando em especial agradeço a paciencia.

    mudei algumas coisas  e deu certo.

    abaixo o codigo que usei. encontrei no site do Macoratti.NET e com algumas adaptaçoes deu certo.

    usei um combobox no lugar do listbox;

    //no inicio do form

    BindingSource bs = new BindingSource();

    //no load do form

    negocio.PreencherDataGridManutencao(dataGridView1);
                
                SqlConnection conexao = new SqlConnection( aki sua conexao)

                try
                {
                    //abre a conexão
                    conexao.Open();

                    //define o comando sql para selecionar os dados das tabela Clientes
                    SqlCommand sql = new SqlCommand("SELECT * from tb_Manutencao", conexao);
                    //cria um adapter para preencher um dataset
                    SqlDataAdapter da = new SqlDataAdapter(sql);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    dataGridView1.DataSource = ds;
                    //atribui o dataset ao DataSource do BindingSource e 
                    //define a propriedade DataMember
                    bs.DataSource = ds;
                    bs.DataMember = ds.Tables[0].TableName;
                    //Atribui o BindingSource ao DataGridView
                    dataGridView1.DataSource = bs;
                }
                catch (Exception)
                {
                    MessageBox.Show("erro ao obter os dados.");
                }
                finally
                {
                    conexao.Close();
                }
            }

    // no botao de pesquisa

     private void button2_Click(object sender, EventArgs e)
            {
                int id = Convert.ToInt32(txtIdveiculo.Text);
                bs.Filter = "idVeiculo= " + id + " AND tipoManut like  "+ tipoManutComboBox.Text + "";
            }

    valeu!!!!!!!!!!!!

    • Marcado como Resposta Marcos_Roberto terça-feira, 3 de abril de 2012 17:51
    terça-feira, 3 de abril de 2012 17:50