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.
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


0