• Domingo 19 de Mayo de 2024, 18:52

Autor Tema:  Obtener el tipo de un Datasource  (Leído 2050 veces)

lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
Obtener el tipo de un Datasource
« en: Miércoles 2 de Marzo de 2011, 17:01 »
0
Hola a Todos, tengo el siguiente caso:
Tengo en un WinForm un Datagridview. El método que me carga el datasource de este , es una Lista asi:
Código: C#
  1.  
  2. public List<Purc_RequisitionTR> obtenerPurc_Requisition(Purc_RequisitionTR paramRequisicion,ControlConsulta controlconsulta)
  3.         {
  4.             return new Purc_RequisitionAD(conexionOracle).obtenerPurc_Requisition(paramRequisicion,controlconsulta);
  5.         }
  6. dvReq_Line.DataSource = new Purc_RequisitionNG(conexionOracle).obtenerPurc_ReqLine(DetalleReq, ControlConsulta.ConsultaLlave);
  7.  
  8. Hasta alli todo funciona muy bien.
  9. Hice un método para Limpiar todos los objetos que estan contenido en  la WinForm,
  10. El problema que tengo es que mi método me limpia correctamente un DataGridView cuando el DataSource se ha cargado con un DataTable, pero si se ha cargado con una List<> (como describo en mi ejemplo), allí ya saca error y es obviamente porque lo estoy condicionando.
  11. Adjunto mi código del método limpiar , para que se den una idea de lo que intente hacer , pero lo deje en comentario porque no es lo óptimo.
  12. Si me dan una idea de como puedo  cambiar el typeof(System.Collections.Generic.List<Purc_Req_lineTR>)) , ya que haciendolo de esta manera , queda amarrado al una lista específica y la idea es poner este código en una libreria que pueda servir a cualquier desarrollador.
  13. Gracias por la ayuda
  14. public static void limpiaForm(Control objContenedor)
  15.         {
  16.             // para cada control contenido en la colección
  17.             foreach (Control obj in objContenedor.Controls)
  18.             {
  19.                 // si tiene hijos, recórrelos de forma recursiva
  20.                 if (obj.HasChildren) limpiaForm(obj);
  21.                 if (obj is TextBox) ((TextBox)obj).Text = "";
  22.                 if (obj is CheckBox) ((CheckBox)obj).Checked = false;
  23.                 if (obj is RadioButton) ((RadioButton)obj).Checked = false;
  24.                 if (obj is ComboBox) ((ComboBox)obj).Text = null;
  25.                 if (obj is ListBox) ((ListBox)obj).Items.Clear();
  26.                 // cambie la forma de limpiar el dataGridView para que pintara correctamente las columnas predefinidas
  27.                 // si se quiere volver a cargar los datos de la base de datos. Si es un DataGridView que no tiene
  28.                 //predefinido el DataSource , el DataSource de mentenerse null
  29.                 if (obj is DataGridView)
  30.                 {
  31.                     if (((DataGridView)obj).DataSource != null)
  32.                     {
  33.                        
  34.              //string tipo = ((DataGridView)obj).DataSource.GetType().ToString();
  35.                         //if (((DataGridView)obj).DataSource.GetType() == typeof(System.Collections.Generic.List<Purc_Req_lineTR>))
  36.                         //{
  37.                         //    MessageBox.Show("lo encontro");
  38.  
  39.                         //}
  40.  
  41.                         DataTable dt;
  42.                         dt = (DataTable)(((DataGridView)obj).DataSource);
  43.                         dt.Rows.Clear();
  44.                     }
  45.                     else
  46.                     {
  47.                         ((DataGridView)obj).Rows.Clear(); ;
  48.                     }
  49.                 }
  50.             }
  51.         }
  52.  
  53.  

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: Obtener el tipo de un Datasource
« Respuesta #1 en: Martes 15 de Marzo de 2011, 18:28 »
0
Ya probaste con esto:

Código: C#
  1.  
  2. datagridview.DataSource = null;
  3.  
  4.  
@gabio87

lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
Re: Obtener el tipo de un Datasource
« Respuesta #2 en: Viernes 15 de Abril de 2011, 17:44 »
0
Hola, gracias por la respuesta.
Si ya lo habia probado , pero el problema es que si lo hago de esta forma me elimina las columnas que habia formateado.

Voy a seguir buscando . No puedo creer que esto no se pueda hacer, ya que limitaria a que los datagridview solo se puedan cargar con DataTable.

Gracias de nuevo.