Posteado por: edeortuzar | 23/12/2013

Generar UserControl dinamicamente dentro de una GridView


Si se encuentran en la necesidad de generar controles de usuario de manera dinámica dentro de un GridView necesitarán saber lo siguiente.

Esta es nuestra grilla, donde tenemos las columnas Vencimiento y Pago Previsto donde queremos crear nuestros controles de usuario de manera dinámica:

<asp:ImageButton ID="btnSeleccionar" CommandArgument="" CommandName="Seleccionar" ImageUrl="images/Editar.gif" ToolTip="Seleccionar" runat="server" />
	

Como verán declaramos que usaremos el método gvCalendario_OnRowDataBound para el evento OnRowDataBound, el cual se ejecuta por cada fila que se crea de la grilla.

Veamos el código dentro de dicho método, que es donde se genera la magia:

protected void gvCalendario_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
	if (e.Row.RowType == DataControlRowType.DataRow)
	{
		if (e.Row.DataItem != null)
		{
			//Se agregan los controles de las fechas
			UI_UserControls_Calendario cal = (UI_UserControls_Calendario)LoadControl("~/UI/UserControls/Calendario.ascx");
			cal.ID = "calVencimiento" + e.Row.RowIndex;
			e.Row.Cells[1].Controls.Add(cal);

			cal = (UI_UserControls_Calendario)LoadControl("~/UI/UserControls/Calendario.ascx");
			cal.ID = "calPagoPrevisto" + e.Row.RowIndex;
			e.Row.Cells[2].Controls.Add(cal);
		}
	}
}

Aquí, como verán, hacemos un LoadControl del control de usuario, de esta manera el control se inicializa, de otra manera, sino hacemos esto dará un mensaje de NullPointerException.

Espero que les sirva.

Saludos.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: