none
Establecer funcion como datasource de un datagridview RRS feed

  • Pregunta

  • Hola:

    Tengo la siguiente funcion:

    public static ScheduleCalendar GetScheduleByDoctor(ScheduleCalendar horas)
          {
              try
              {
                  ScheduleCalendar AllHours = null;
    
                  using (SqlCeConnection cnx = new SqlCeConnection(ConfigurationManager.ConnectionStrings["Path"].ToString()))
                  {
                      string SqlAction = @"SELECT Id_hora, Horario FROM Calendario_horas WHERE Hora BETWEEN @hoursfrom AND @hoursto ORDER BY Id_hora";
                      cnx.Open();
                      SqlCeCommand cmd = new SqlCeCommand(SqlAction, cnx);
                      cmd.Parameters.AddWithValue("@hoursfrom", horas.HourFrom);
                      cmd.Parameters.AddWithValue("@hoursto", horas.HourTo);
                      SqlCeDataReader dr = cmd.ExecuteReader();
                      while (dr.Read())
                      {
                          AllHours  = ListAllHoursForDoctor(dr);
                      }
                      return AllHours;
                  }
              }
              catch (Exception)
              {
                  throw;
              }
          }
    
          private static ScheduleCalendar ListAllHoursForDoctor(IDataReader reader)
          {
              ScheduleCalendar Hours = new ScheduleCalendar();
    
              Hours.IdSchedule = Convert.ToInt32(reader["Id_hora"]);
              Hours.Schedule = Convert.ToDateTime(reader["Horario"]);
              
              return Hours;
          }
        }

    La cual mando a llamar de la siguiente manera:

     private void button1_Click(object sender, EventArgs e)
            {
                if (HoursDoctor == null)
                    HoursDoctor = new ScheduleCalendar();
    
                TimeSpan horade = dtphorade.Value.TimeOfDay;
                TimeSpan horaa = dtphoraa.Value.TimeOfDay;
    
                HoursDoctor.HourFrom = horade.Hours;
                HoursDoctor.HourTo = horaa.Hours;
    
                dgvcitas.AutoGenerateColumns = true;
                dgvcitas.DataSource = DASchedule.GetScheduleByDoctor(HoursDoctor);
                dgvcitas.Columns["column_idhora"].DataPropertyName = "IdSchedule";
                dgvcitas.Columns["column_hora"].DataPropertyName = "Schedule";
                //dgvcitas.Columns["column_status"].DataPropertyName = False;
            }

    Al momento de darle seguimiento con un breackpoint y F11 veo que si retorna valores, pero no logro visualizarlos en el DataGridView, mismo que esta creado en tiempo de diseño con dos columns unicamente.

    Alguien con experiencia que pueda encontrar el erro? o la mala asignacion de la funcion?

    Gracias de antemano!


    Saludos desde Monterrey, Nuevo León, México!!!

    • Cambiado webJoseModerator jueves, 29 de noviembre de 2012 14:08 (De:Lenguaje C#)
    jueves, 29 de noviembre de 2012 5:44

Respuestas

  • Gracias Leandro:

    El tema del Try Catch, no aparece en el bloque de código porque solo tome una parte del mismo para hacer pruebas por medio del Click de un botón, en realidad ese bloque esta dentro de otro en donde informo al usuario de algún error por medio de un MessageBox, pero sin usar el mensaje que manda la exception sino con un mensaje informativo genérico.

    Gracias aplico lo que me comentas y regreso para platicarte como me fue!


    Saludos desde Monterrey, Nuevo León, México!!!


    jueves, 29 de noviembre de 2012 20:20

Todas las respuestas

  • si vas a cargar dentro de un grid, proque devuelve el metodo GetScheduleByDoctor() solo un scheduler simple, porque no devuelve un

    List<ScheduleCalendar> o sea

    public static List<ScheduleCalendar> GetScheduleByDoctor(ScheduleCalendar horas)
    {
    
    	List<ScheduleCalendar> AllHours = new List<ScheduleCalendar>();
    
    	using (SqlCeConnection cnx = new SqlCeConnection(ConfigurationManager.ConnectionStrings["Path"].ToString()))
    	{
    	  string SqlAction = @"SELECT Id_hora, Horario FROM Calendario_horas WHERE Hora BETWEEN @hoursfrom AND @hoursto ORDER BY Id_hora";
    	  cnx.Open();
    	  SqlCeCommand cmd = new SqlCeCommand(SqlAction, cnx);
    	  cmd.Parameters.AddWithValue("@hoursfrom", horas.HourFrom);
    	  cmd.Parameters.AddWithValue("@hoursto", horas.HourTo);
    	  SqlCeDataReader dr = cmd.ExecuteReader();
    	  
    	  while (dr.Read())
    	  {
    		  AllHours.Add(ListAllHoursForDoctor(dr));
    	  }
    	  
    	}
    	
    	return AllHours;
    
    }

    alli si devuelves uan lista que puedes suar en el grid

    Nota: definir un try..catch que realiza un throw es como no definirlo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 29 de noviembre de 2012 7:44
  • Gracias Leandro:

    El tema del Try Catch, no aparece en el bloque de código porque solo tome una parte del mismo para hacer pruebas por medio del Click de un botón, en realidad ese bloque esta dentro de otro en donde informo al usuario de algún error por medio de un MessageBox, pero sin usar el mensaje que manda la exception sino con un mensaje informativo genérico.

    Gracias aplico lo que me comentas y regreso para platicarte como me fue!


    Saludos desde Monterrey, Nuevo León, México!!!


    jueves, 29 de noviembre de 2012 20:20