C sharp - datagrid en tiempo de ejecucion

 
Vista:

datagrid en tiempo de ejecucion

Publicado por Lulu (40 intervenciones) el 30/04/2007 16:23:54
Hola, estoy intentando hacer lo siguiente:

como tengo que hacer muchos datagrid, y casi siempre mis compañeros lo hacen por código, y no em modo diseño, pues he creado una clase CDatagrid, para que pasándole unos parámatros me genere un datagrid sin que tenga que dibujarlo, ni repetir el mismó código una y otra vez.

el problema es que no me sale nada en la pantalla. Es como si no lo mostrase, y es que le he puesto visible = true.

Añguien puede decirme qué se me pasa por alto??? debo instanciarlo en algún sitio más???

Os dejo la clase:

/// <summary>
/// clase para construir datagrids de forma dinámica
/// </summary>
public class CDataGrid
{
DataGridView nuevoDataGrid= new DataGridView();

// constructor
public CDataGrid( ArrayList columnas,
bool encabezadosVisibles,
int anchoGrid, int altoGrid, int posicionX, int posicionY,
bool permisoEditarFilas, bool permisoEditarColumnas)
{
int i;
nuevoDataGrid.Left = posicionY;
nuevoDataGrid.Top = posicionX;

for (i = 0; i < columnas.Count; i++)
{
//vamos añadiendo las columnas del arraylist
//AQUI LE AÑADO LAS COLUMNAS PERO ESO NO ME DA PROBLEMAS, CREO...
}

nuevoDataGrid.Width = anchoGrid;
nuevoDataGrid.Height = altoGrid;

nuevoDataGrid.ColumnHeadersVisible = (bool)encabezadosVisibles;
nuevoDataGrid.AllowUserToAddRows = (bool)permisoEditarFilas;
nuevoDataGrid.AllowUserToDeleteRows = (bool)permisoEditarFilas;
nuevoDataGrid.AllowUserToOrderColumns = (bool)permisoEditarColumnas;
nuevoDataGrid.AllowUserToResizeColumns = (bool)permisoEditarColumnas;
nuevoDataGrid.Visible = true;
}

}

Para las columnas, he creado otra clase en donde trato todos sus parámetros y las voy añadiendo al arraylist columnas. Peor esto lo hace bien.


Y la llamada desde el formulario:

public DataGridView Cargar_Grid()
{
//definimos las columas a agregar en el datagridview, las vamos almacenando en un arraylist.

ArrayList aColumnas = new ArrayList();
CColumna col = new CColumna("col0", "DataGridViewCheckBoxColumn", "Claves", 20, 0, true, true, 1, DataGridViewTriState.False);
aColumnas.Add(col);
col = new CColumna("col1", "DataGridViewTextBoxColumn", "Campooculto", 20, 1, false, true, 1, DataGridViewTriState.False);
aColumnas.Add(col);
col = new CColumna("col3", "DataGridViewTextBoxColumn", "Campos", 200, 2, true, true, 1, DataGridViewTriState.False);
aColumnas.Add(col);

CDataGrid dgvDatos = new CDataGrid(aColumnas, true, 300, 100, 20, 30, true, false, fgenerarmerge.mi_panel);
return dgvDatos;
}

pero no me muestra nada. Bueno siento tiraros con este tocho de código, de verdad, pero por si alguien sabe cómo hacer para que se muestre en la posiciçon que le indico. Muchas gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:datagrid en tiempo de ejecucion

Publicado por Yamil Bracho (1164 intervenciones) el 02/05/2007 17:21:12
Creo que te falta agregarlo a su contenedor. this.Controls.Add(TuGrid)
pero tu clase debe ser un componente visual, es decir, en vez de tener un GridView como componente DEBERIA heredar de este para que sea visto como un control. Seria algo como

public class CDataGrid : DataGridView
{
...
}

Chequea la pagina http://blogs.msdn.com/mattdotson/articles/490868.aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datagrid en tiempo de ejecucion

Publicado por Lulu (40 intervenciones) el 07/05/2007 12:16:36
vale muchas gracias por la info, como siempre. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar