none
laço for dentro do monthcalendar exibindo horarios no Datagridview RRS feed

  • Pergunta

  • Boa noite,

    estou tentando fazer essa agenda com horários disponíveis, e criei um laço for dentro do monthcalendar para preencher uma coluna do datagridview que mostrará os horários disponíveis, deu certo, só que quando muda a data ele acrescenta todos os horários embaixo novamente, e o que queria era que a cada data ele limpasse e mostrasse os horários disponíveis novamente daquele dia.

    Alguém sabe como faço isso no meu laço for? Meu código está assim:

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
            {
                label8.Text = monthCalendar1.SelectionRange.Start.ToShortDateString();
                conexaoDataSet = new DataSet();
                conexao = new MySqlConnection("SERVER=localhost;DATABASE=teste;UID=root;PASSWORD=;");
    
                int i;
                string[] horario = new string[17];
    
                horario[0] = "8:00";
                horario[1] = "8:30";
                horario[2] = "9:00";
                horario[3] = "9:30";
                horario[4] = "10:00";
                horario[5] = "10:30";
                horario[6] = "11:00";
                horario[7] = "11:30";
                horario[8] = "12:00";
                horario[9] = "12:30";
                horario[10] = "13:00";
                horario[11] = "13:30";
                horario[12] = "14:00";
                horario[13] = "14:30";
                horario[14] = "15:00";
                horario[15] = "15:30";
                horario[16] = "16:00";
    
                for (i = 0; i < 17; i++)
                {
                    dataGridView1.Rows.Add(horario[i]);
                    
                }
    }

    sexta-feira, 16 de dezembro de 2016 02:33

Respostas

  • List<string> horario = new List<string>();
    
    private void Form1_Load(object sender, EventArgs e)
    {
         horario.Add("8:00");
         horario.Add("8:30");
               
         for (int i = 0; i < horario.Count; i++)
         {
             dataGridView1.Rows.Add(horario[i]);
         }
    }
    
    private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
    {
         dataGridView1.Rows.Clear();
    
         horario.Add(monthCalendar1.Start.ToShortDateString());
    
    
         for (int i = 0; i < horario.Count; i++)
         {
             dataGridView1.Rows.Add(horario[i]);
         }
    }
    
    
    Espero que ajude.
    • Marcado como Resposta Andressa.s segunda-feira, 19 de dezembro de 2016 01:59
    segunda-feira, 19 de dezembro de 2016 01:31
  • Hey boa noite,

    Conseguir resolver meu problema...vou colocar aqui meu método tb...hehe eu criei uma nova tabela de horarios no meu banco de dados com id_horario e descrição do horario... e depois coloquei dentro da tabelas consultas o id_horario, fui no codigo dentro do monthcalendar e fiz a conexão com o banco de dados e com datagridview...usando o left join no sql, então quando muda a data, ele mostra os  horarios que ainda estão disponiveis e os ocupados...Meu codigo ficou da seguinte forma:

      private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
            {
               
                conexaoDataSet = new DataSet();
                conexao = new MySqlConnection("SERVER=localhost;DATABASE=teste;UID=root;PASSWORD=;");
    
               try
              {
                    conexao.Open();
      
                   string consu = "select a.Horario ,b.dataa,b.Cd_Consulta,g.Nome_Paciente, g.Cd_Paciente, c.Nome_Dentista, d.Descricao from horario a left join consultas b on (a.Cd_hr=b.cd_hr and b.Dataa LIKE '%" + monthCalendar1.SelectionRange.Start.Date.ToString("yyyy-MM-dd") + "%') left join paciente g on g.cd_paciente=b.Cd_Paciente left join dentista c on c.CRO=b.cro left join procedimentos d on d.cd_procedimento=b.cd_procedimento order by a.Cd_hr";
                     
                     MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter(consu, conexao);
                      conexaoAdapter.Fill(conexaoDataSet, "consultas");
                      dataGridView1.DataSource = conexaoDataSet.Tables["consultas"];
    
                      //exibiçao datagrid 
                      dataGridView1.Columns["Horario"].HeaderText = "Disponiveis";
                      dataGridView1.Columns["Cd_Consulta"].HeaderText = "Consulta";
                      dataGridView1.Columns["Dataa"].HeaderText = "Data";
                      dataGridView1.Columns["Nome_Paciente"].HeaderText = "Nome Paciente";
                      dataGridView1.Columns["Cd_Paciente"].HeaderText = "Codigo Paciente";
                      dataGridView1.Columns["Nome_Dentista"].HeaderText = "Nome Dentista";
                      dataGridView1.Columns["Descricao"].HeaderText = "Procedimento";
    
                   
                    conexao.Close();
                    conexao.Dispose();
               }
                catch
                {
                    MessageBox.Show("Erro de conexão", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    conexao.Close();
                    conexao.Dispose();
                }         
            }

    Dei mais volta..mas funcionou muito bem!

    De qualquer forma obrigada a vc que me ajudou jovem!




    • Marcado como Resposta Andressa.s segunda-feira, 19 de dezembro de 2016 01:59
    • Editado Andressa.s segunda-feira, 19 de dezembro de 2016 02:00
    segunda-feira, 19 de dezembro de 2016 01:57

Todas as Respostas

  • Bom dia,

     para remover as linhas basta inserir :

    dataGridView1.Rows.Clear();
     Esse método remove todas as linhas de seu datagrid.

     

    sexta-feira, 16 de dezembro de 2016 09:56
  • Não funcionou jovem...

    dai ele apaga tudo do datagridview...

    o que eu queria era que pra cada data ele exibisse as linhas novamente de 0 a 17.

    sábado, 17 de dezembro de 2016 19:35
  • List<string> horario = new List<string>();
    
    private void Form1_Load(object sender, EventArgs e)
    {
         horario.Add("8:00");
         horario.Add("8:30");
               
         for (int i = 0; i < horario.Count; i++)
         {
             dataGridView1.Rows.Add(horario[i]);
         }
    }
    
    private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
    {
         dataGridView1.Rows.Clear();
    
         horario.Add(monthCalendar1.Start.ToShortDateString());
    
    
         for (int i = 0; i < horario.Count; i++)
         {
             dataGridView1.Rows.Add(horario[i]);
         }
    }
    
    
    Espero que ajude.
    • Marcado como Resposta Andressa.s segunda-feira, 19 de dezembro de 2016 01:59
    segunda-feira, 19 de dezembro de 2016 01:31
  • Hey boa noite,

    Conseguir resolver meu problema...vou colocar aqui meu método tb...hehe eu criei uma nova tabela de horarios no meu banco de dados com id_horario e descrição do horario... e depois coloquei dentro da tabelas consultas o id_horario, fui no codigo dentro do monthcalendar e fiz a conexão com o banco de dados e com datagridview...usando o left join no sql, então quando muda a data, ele mostra os  horarios que ainda estão disponiveis e os ocupados...Meu codigo ficou da seguinte forma:

      private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
            {
               
                conexaoDataSet = new DataSet();
                conexao = new MySqlConnection("SERVER=localhost;DATABASE=teste;UID=root;PASSWORD=;");
    
               try
              {
                    conexao.Open();
      
                   string consu = "select a.Horario ,b.dataa,b.Cd_Consulta,g.Nome_Paciente, g.Cd_Paciente, c.Nome_Dentista, d.Descricao from horario a left join consultas b on (a.Cd_hr=b.cd_hr and b.Dataa LIKE '%" + monthCalendar1.SelectionRange.Start.Date.ToString("yyyy-MM-dd") + "%') left join paciente g on g.cd_paciente=b.Cd_Paciente left join dentista c on c.CRO=b.cro left join procedimentos d on d.cd_procedimento=b.cd_procedimento order by a.Cd_hr";
                     
                     MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter(consu, conexao);
                      conexaoAdapter.Fill(conexaoDataSet, "consultas");
                      dataGridView1.DataSource = conexaoDataSet.Tables["consultas"];
    
                      //exibiçao datagrid 
                      dataGridView1.Columns["Horario"].HeaderText = "Disponiveis";
                      dataGridView1.Columns["Cd_Consulta"].HeaderText = "Consulta";
                      dataGridView1.Columns["Dataa"].HeaderText = "Data";
                      dataGridView1.Columns["Nome_Paciente"].HeaderText = "Nome Paciente";
                      dataGridView1.Columns["Cd_Paciente"].HeaderText = "Codigo Paciente";
                      dataGridView1.Columns["Nome_Dentista"].HeaderText = "Nome Dentista";
                      dataGridView1.Columns["Descricao"].HeaderText = "Procedimento";
    
                   
                    conexao.Close();
                    conexao.Dispose();
               }
                catch
                {
                    MessageBox.Show("Erro de conexão", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    conexao.Close();
                    conexao.Dispose();
                }         
            }

    Dei mais volta..mas funcionou muito bem!

    De qualquer forma obrigada a vc que me ajudou jovem!




    • Marcado como Resposta Andressa.s segunda-feira, 19 de dezembro de 2016 01:59
    • Editado Andressa.s segunda-feira, 19 de dezembro de 2016 02:00
    segunda-feira, 19 de dezembro de 2016 01:57