Remover Item de datagrid.

01/08/2006 - 23:16 por Juan Suarez | Informe spam
Hola que tal?

1.Como puedo hacer para remover un item de un datagrid?
2.Como hago para agregar el item manualmente.?

No es que quiera agregar el item que voy a remover. no.

Lo que pasa es que tengo un datagrid y lo que quiero hacer es que cuando el
usuario cree un registro, simplemente lo agrego despues del ultimo item del
datagrid. en vez de volver a llenar el datagrid.

3.Quisera saber como hago para colorear la letra de una celda, dependiendo
de X condicion. Me imagino que debo recorrer el datagrid despues de
llenarlo.

Suerte y muchas gracias por la ayuda que me han brindado.


Juan Suarez

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
02/08/2006 - 12:28 | Informe spam
Hola Juan

Para añadir y eliminar una fila del control datagrid puedes utilizar el
dataset asociado al datagrid: añade o borra la fila de la tabla del dataset
que esté mostrando el datagrid, y este control automáticamente debería de
actualizar la información que muestra. Te acompaño un ejemplo de código para
que lo puedas probar:

//--
public class Form1 : System.Windows.Forms.Form
{
DataSet dsDatos;
//

private void Button1_Click(object sender, System.EventArgs e)
{
// creamos un dataset, un datatable para el dataset
// y la llenamos con algunas filas
DataTable dtClientes = new DataTable();
dtClientes.TableName = "Clientes";

DataColumn dcIDCliente = new DataColumn();
dcIDCliente.ColumnName = "IDCliente";
dcIDCliente.DataType = typeof(int);

DataColumn dcNombre = new DataColumn("Nombre");
dcNombre.DataType = Type.GetType("System.String");

DataColumn dcFchAlta = new DataColumn("FchAlta", typeof(DateTime));

dtClientes.Columns.Add(dcIDCliente);
dtClientes.Columns.Add(dcNombre);
dtClientes.Columns.Add(dcFchAlta);

DataRow drFila ;

drFila = dtClientes.NewRow();
drFila["IDCliente"] = 1;
drFila["Nombre"] = "Ana Lozano";
drFila["FchAlta"] = "21/07/2006";
dtClientes.Rows.Add(drFila);

drFila = dtClientes.NewRow();
drFila["IDCliente"] = 2;
drFila["Nombre"] = "Enrique Naranjo";
drFila["FchAlta"] = "08/10/2006";
dtClientes.Rows.Add(drFila);

drFila = dtClientes.NewRow();
drFila["IDCliente"] = 3;
drFila["Nombre"] = "Elena Domenech";
drFila["FchAlta"] = "14/05/2004";
dtClientes.Rows.Add(drFila);

dsDatos = new DataSet("Datos");
dsDatos.Tables.Add(dtClientes);

this.DataGrid1.DataSource = dsDatos;
this.DataGrid1.DataMember = "Clientes";
}

private void Button2_Click(object sender, System.EventArgs e)
{
// añadimos una fila a la tabla del dataset,
// el datagrid debería refrescar su contenido
DataRow drFila;
drFila = dsDatos.Tables["Clientes"].NewRow();
drFila["IDCliente"] = 4;
drFila["Nombre"] = "Miguel Rivas";
drFila["FchAlta"] = "18/09/2005";
dsDatos.Tables["Clientes"].Rows.Add(drFila);
}

private void Button3_Click(object sender, System.EventArgs e)
{
// borramos una fila a la tabla del dataset,
// el datagrid debería refrescar su contenido
dsDatos.Tables["Clientes"].Rows[2].Delete();
}
}
//--

Respecto a cambiar el color de una celda del datagrid en función de una
condición, en primer lugar debes crear una clase que herede de
DataGridTextBoxColumn y reemplazar el método Paint(), que se producirá cada
vez que necesite pintarse contenido en el datagrid. Dentro de este método
compruebas la condición y le asignas el color.

//--
public class DGTxtColColor : DataGridTextBoxColumn
{
protected override void Paint(Graphics g,
Rectangle bounds, CurrencyManager source,
int rowNum, Brush backBrush, Brush foreBrush,
bool alignToRight)
{
SolidBrush oBrush;
DataRowView oFilaDatos;

oFilaDatos=(DataRowView)source.List[rowNum];

if ((int)oFilaDatos["IDCliente"] == 2)
{
oBrush = new SolidBrush(Color.LightBlue);
}
else
{
oBrush = (SolidBrush)backBrush;
}

base.Paint (g, bounds, source, rowNum, oBrush, foreBrush, alignToRight);
}
}
//--

Para aplicar esto en el código del formulario, debes crear un estilo para el
datagrid, y definir las columnas con el estilo de visualización para cada
una. En aquellas columnas que quieras mostrar el color, debes crearla de la
clase anterior. Retocando al final del código del botón que crea el dataset,
quedaría como puedes ver a continuación:

//--
private void Button1_Click(object sender, System.EventArgs e)
{
//
this.DataGrid1.DataSource = dsDatos;
this.DataGrid1.DataMember = "Clientes";

DataGridTableStyle oTableStyle = new DataGridTableStyle();
oTableStyle.MappingName = "Clientes";

DGTxtColColor colCliente = new DGTxtColColor();
colCliente.MappingName = "IDCliente";
colCliente.HeaderText = "Cod.Cliente";

DataGridTextBoxColumn colNombre = new DataGridTextBoxColumn();
colNombre.MappingName = "Nombre";
colNombre.HeaderText = "Nombre";

DGTxtColColor colFecha = new DGTxtColColor();
colFecha.MappingName = "FchAlta";
colFecha.HeaderText = "Fecha Alta";

oTableStyle.GridColumnStyles.AddRange(new DataGridColumnStyle[]
{colCliente, colNombre, colFecha});

this.DataGrid1.TableStyles.Add(oTableStyle);
}
//--

Y esto sería todo. Espero que te sirva de ayuda.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Juan Suarez" wrote:

Hola que tal?

1.Como puedo hacer para remover un item de un datagrid?
2.Como hago para agregar el item manualmente.?

No es que quiera agregar el item que voy a remover. no.

Lo que pasa es que tengo un datagrid y lo que quiero hacer es que cuando el
usuario cree un registro, simplemente lo agrego despues del ultimo item del
datagrid. en vez de volver a llenar el datagrid.

3.Quisera saber como hago para colorear la letra de una celda, dependiendo
de X condicion. Me imagino que debo recorrer el datagrid despues de
llenarlo.

Suerte y muchas gracias por la ayuda que me han brindado.


Juan Suarez



Respuesta Responder a este mensaje
#2 Juan Suarez
02/08/2006 - 15:38 | Informe spam
Muchas gracias. Voy a probarlo.

Juan Suarez
"Luis Miguel Blanco" escribió
en el mensaje news:
Hola Juan

Para añadir y eliminar una fila del control datagrid puedes utilizar el
dataset asociado al datagrid: añade o borra la fila de la tabla del
dataset
que esté mostrando el datagrid, y este control automáticamente debería de
actualizar la información que muestra. Te acompaño un ejemplo de código
para
que lo puedas probar:

//--
public class Form1 : System.Windows.Forms.Form
{
DataSet dsDatos;
//

private void Button1_Click(object sender, System.EventArgs e)
{
// creamos un dataset, un datatable para el dataset
// y la llenamos con algunas filas
DataTable dtClientes = new DataTable();
dtClientes.TableName = "Clientes";

DataColumn dcIDCliente = new DataColumn();
dcIDCliente.ColumnName = "IDCliente";
dcIDCliente.DataType = typeof(int);

DataColumn dcNombre = new DataColumn("Nombre");
dcNombre.DataType = Type.GetType("System.String");

DataColumn dcFchAlta = new DataColumn("FchAlta", typeof(DateTime));

dtClientes.Columns.Add(dcIDCliente);
dtClientes.Columns.Add(dcNombre);
dtClientes.Columns.Add(dcFchAlta);

DataRow drFila ;

drFila = dtClientes.NewRow();
drFila["IDCliente"] = 1;
drFila["Nombre"] = "Ana Lozano";
drFila["FchAlta"] = "21/07/2006";
dtClientes.Rows.Add(drFila);

drFila = dtClientes.NewRow();
drFila["IDCliente"] = 2;
drFila["Nombre"] = "Enrique Naranjo";
drFila["FchAlta"] = "08/10/2006";
dtClientes.Rows.Add(drFila);

drFila = dtClientes.NewRow();
drFila["IDCliente"] = 3;
drFila["Nombre"] = "Elena Domenech";
drFila["FchAlta"] = "14/05/2004";
dtClientes.Rows.Add(drFila);

dsDatos = new DataSet("Datos");
dsDatos.Tables.Add(dtClientes);

this.DataGrid1.DataSource = dsDatos;
this.DataGrid1.DataMember = "Clientes";
}

private void Button2_Click(object sender, System.EventArgs e)
{
// añadimos una fila a la tabla del dataset,
// el datagrid debería refrescar su contenido
DataRow drFila;
drFila = dsDatos.Tables["Clientes"].NewRow();
drFila["IDCliente"] = 4;
drFila["Nombre"] = "Miguel Rivas";
drFila["FchAlta"] = "18/09/2005";
dsDatos.Tables["Clientes"].Rows.Add(drFila);
}

private void Button3_Click(object sender, System.EventArgs e)
{
// borramos una fila a la tabla del dataset,
// el datagrid debería refrescar su contenido
dsDatos.Tables["Clientes"].Rows[2].Delete();
}
}
//--

Respecto a cambiar el color de una celda del datagrid en función de una
condición, en primer lugar debes crear una clase que herede de
DataGridTextBoxColumn y reemplazar el método Paint(), que se producirá
cada
vez que necesite pintarse contenido en el datagrid. Dentro de este método
compruebas la condición y le asignas el color.

//--
public class DGTxtColColor : DataGridTextBoxColumn
{
protected override void Paint(Graphics g,
Rectangle bounds, CurrencyManager source,
int rowNum, Brush backBrush, Brush foreBrush,
bool alignToRight)
{
SolidBrush oBrush;
DataRowView oFilaDatos;

oFilaDatos=(DataRowView)source.List[rowNum];

if ((int)oFilaDatos["IDCliente"] == 2)
{
oBrush = new SolidBrush(Color.LightBlue);
}
else
{
oBrush = (SolidBrush)backBrush;
}

base.Paint (g, bounds, source, rowNum, oBrush, foreBrush, alignToRight);
}
}
//--

Para aplicar esto en el código del formulario, debes crear un estilo para
el
datagrid, y definir las columnas con el estilo de visualización para cada
una. En aquellas columnas que quieras mostrar el color, debes crearla de
la
clase anterior. Retocando al final del código del botón que crea el
dataset,
quedaría como puedes ver a continuación:

//--
private void Button1_Click(object sender, System.EventArgs e)
{
//
this.DataGrid1.DataSource = dsDatos;
this.DataGrid1.DataMember = "Clientes";

DataGridTableStyle oTableStyle = new DataGridTableStyle();
oTableStyle.MappingName = "Clientes";

DGTxtColColor colCliente = new DGTxtColColor();
colCliente.MappingName = "IDCliente";
colCliente.HeaderText = "Cod.Cliente";

DataGridTextBoxColumn colNombre = new DataGridTextBoxColumn();
colNombre.MappingName = "Nombre";
colNombre.HeaderText = "Nombre";

DGTxtColColor colFecha = new DGTxtColColor();
colFecha.MappingName = "FchAlta";
colFecha.HeaderText = "Fecha Alta";

oTableStyle.GridColumnStyles.AddRange(new DataGridColumnStyle[]
{colCliente, colNombre, colFecha});

this.DataGrid1.TableStyles.Add(oTableStyle);
}
//--

Y esto sería todo. Espero que te sirva de ayuda.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Juan Suarez" wrote:

Hola que tal?

1.Como puedo hacer para remover un item de un datagrid?
2.Como hago para agregar el item manualmente.?

No es que quiera agregar el item que voy a remover. no.

Lo que pasa es que tengo un datagrid y lo que quiero hacer es que cuando
el
usuario cree un registro, simplemente lo agrego despues del ultimo item
del
datagrid. en vez de volver a llenar el datagrid.

3.Quisera saber como hago para colorear la letra de una celda,
dependiendo
de X condicion. Me imagino que debo recorrer el datagrid despues de
llenarlo.

Suerte y muchas gracias por la ayuda que me han brindado.


Juan Suarez



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida