CLR: .Net / Mono / Boo / Otros CLR > C#

 Limpiar Datagridview

(1/1)

lugarda:
Hola amigos , tengo un DataGridview al cual le he predefinido tres columas factura,Valor y una tercera columna del tipo DataGridViewCheckBoxColumn. Cuando hago el Load de la Form que contiene el  DataGridViex se cargan los datos del DataSource de la base de datos . En esta misma Form tengo  un boton Limpiar para que limpie todos los controles (Textbox, ComboBox,dataGridView) .

Tengo el siguiente método para recorrer todos los controles y limpiarlos , dependiendo del tipo que sean. El problema que tengo es que para el DataGridview no me pinta de nuevo las columnas que predefiní . como hago para que despues que limpie los datos del DataGridView me pinte de nuevo las columnas que habia predefinido inicialmente.

Si alguno tiene un tip que me pueda ayudar , se los  agradezco muchisimo.

Ahh y gracias chicos por todas las ayudas que me han brindado.


--- Código: C# ---  public static void limpiaForm(Control objContenedor)        {          // para cada control contenido en la colección           foreach (Control obj in objContenedor.Controls)           {             // si tiene hijos, recórrelos de forma recursiva               if (obj.HasChildren) limpiaForm(obj);               if (obj is TextBox)     ((TextBox)obj).Text = "";               if (obj is CheckBox)    ((CheckBox)obj).Checked = false;               if (obj is RadioButton) ((RadioButton)obj).Checked = false;               if (obj is DataGridView) ((DataGridView)obj).DataSource = null;          }       }  private void bLimpiar_Click(object sender, EventArgs e)        {            limpiaForm(this);           }   

Newtek:
Ok tengo un par de preguntas para ti... solo para clarificar...


En donde pre-definistes esas columnas.. en el  load del form ?

Bueno en fin yo creo que podrias usar algo como esto para limpiar los valores de los rows.

datagrid.Rows.RemoveAt(0) //Yo puse 0 pero lo que tiene que ir alli es el index del row.

Otra cosa que talvez puedes probar es datagrid.rows.clear() ... avisame que te funciona mejor. No estoy 100% seguro pero creo que tambien hay un metodo que se llama datagrid.clear()

Bueno avisame con mucho gusto te ayudo.

Saludos.


Carlos Cor.
Web Hosting, Design, Development & SEO at Crystaltech

gerloxxx:
Hola, si predefiniste las columnas en tiempo de diseño, cuando asignas null al datasource, dichas columnas se conservan, a menos que tu mismo las elimines ( .Columns.Clear(); )
se me hace raro que no te funcione....

Lo que puedes probar es eliminar solo los renglones del datasource, asi como comenta  Carlos_Cor_CT, pero trabajando directamente sobre este:


--- Código: C# ---             DataTable dt;            dt = (DataTable)(((DataGridView)obj).DataSource);            dt.Rows.Clear();  
Saludos

lugarda:
gerloxxx gracias . Probé tu solucion eliminando las filas directamente sobre el datatable y funcionó perfecto.
Carlos_Cor_CT gracias tambien por tus ideas. Probé con tu solución pero me saca el siguiente mensaje de error "No se puede borrar esta Lista" System.Data :
La linea de código que habia puesto era

--- Código: C# --- if (obj is DataGridView) ((DataGridView)obj).Rows.Clear(); 
finalmente probando la solución de gerloxxx lo deje así:

--- Código: C# --- public static void limpiaForm(Control objContenedor)        {          // para cada control contenido en la colección           foreach (Control obj in objContenedor.Controls)           {                // si tiene hijos, recórrelos de forma recursiva               if (obj.HasChildren) limpiaForm(obj);               if (obj is TextBox)     ((TextBox)obj).Text = "";               if (obj is CheckBox)    ((CheckBox)obj).Checked = false;               if (obj is RadioButton) ((RadioButton)obj).Checked = false;               if (obj is DataGridView)               {                   DataTable dt;                   dt = (DataTable)(((DataGridView)obj).DataSource);                   dt.Rows.Clear();               }          }  gracias de nuevo a los dos por sus valioso aportes.

Navegación

[0] Índice de Mensajes

Ir a la versión completa