.NET: Crear Rows dinámicamente en un GridView

A veces, en un GridView que ya tenemos cargado con datos de un DataSource me ha surgido la necesidad de introducir una nueva fila. Ya sea al principio, en medio o al final. Por ejemplo, filas que dividan nuestro GridView en varias secciones. Podemos hacer esto mientras se cargan los datos en el GridView, así que creamos el evento DataBound, y dependiendo de nuestra necesidad (en qué punto queremos añadir una nueva fila), llamamos al método CreateRowAt, que nos crea la fila en una posición determinada, y para distinguirla del resto le asignamos un color distinto que le pasamos como parámetro:


protected void GridViewMails_DataBound(object sender, EventArgs e)
{
for (int i = 0, i < GridViewMails.Rows.Count; i++)
{
if(algo)
{
string hexcolor = "#003399";
Color rowColor = ColorTranslator.FromHtml(hexcolor);

CreateRowAt(GridViewMails, i, rowColor); //i es la posición de la fila que añadiremos
}
}
}

//Creamos la fila
private void CreateRowAt(GridView gridView, int rowNumber, System.Drawing.Color rowColor)
{
Table table = gridView.Rows[rowNumber].Parent as Table;
if (table == null)
return;
GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Normal);
row.Cells.Add(CreateColumn(gridView, rowColor));
table.Rows.AddAt(rowNumber, row);
}

//Creamos la celda de esa fila
private TableCell CreateColumn(GridView gridView, System.Drawing.Color rowColor)
{
//Creamos una nueva celda y le aplicamos el estilo que queramos
TableCell cell = new TableCell();
cell.BackColor = rowColor;
cell.ForeColor = System.Drawing.Color.White;
cell.Font.Bold = true;
cell.ColumnSpan = gridView.Columns.Count;
cell.Width = Unit.Percentage(100);
cell.Controls.Add(new LiteralControl("Nueva Sección"));
return cell;
}
.NET: Crear Rows dinámicamente en un GridView .NET: Crear Rows dinámicamente en un GridView Reviewed by Unknown on 11:30 Rating: 5

No hay comentarios:

Con la tecnología de Blogger.