Foros del Web » Programación para mayores de 30 ;) » .NET »

ASP:Literal dentro de FormView

Estas en el tema de ASP:Literal dentro de FormView en el foro de .NET en Foros del Web. Buenas tardes. Tengo un Literal dentro de un FormView (fvProyecto). Éste no está vinculado a ningun campo del propio FormView. Las líneas (code-behind) con las ...
  #1 (permalink)  
Antiguo 13/03/2009, 09:29
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 2 meses
Puntos: 0
ASP:Literal dentro de FormView

Buenas tardes.

Tengo un Literal dentro de un FormView (fvProyecto). Éste no está vinculado a ningun campo del propio FormView.

Las líneas (code-behind) con las que intento asignar el TEXT al control Literal es el siguiente:

Código:
If fvProyecto.CurrentMode = FormViewMode.ReadOnly Then
   Dim texto As Literal
   texto = fvProyecto.FindControl("tarta3D")
   texto.Text = crearGraficDeTarta()
End If
Lo he puesto en Form_Load, fvProyecto, fvProyecto_DataBinding, fvProyecto_DataBound, form_prerender, y algún otro evento. Pero siempre me da el mismo error:

"Referencia a objeto no establecida como instancia de un objeto."
Excepción --> NullReferenceException

Que tengo que hacer para que lo reconozca?
Gracias.

Edito: También he tratado de obtener el control con: texto = fvProyecto.Row.FindControl("tarta3D") que lo he encontrado buscando por la red, pero obtengo el mismo resultado.

Última edición por joseibarz; 13/03/2009 a las 09:32 Razón: Se me había olvidado comentar...
  #2 (permalink)  
Antiguo 13/03/2009, 16:08
 
Fecha de Ingreso: enero-2004
Ubicación: mexico
Mensajes: 110
Antigüedad: 20 años, 3 meses
Puntos: 0
Respuesta: ASP:Literal dentro de FormView

intenta con esto

If fvProyecto.CurrentMode = FormViewMode.ReadOnly Then
Dim texto As Literal
fvProyecto.DataBind()
texto = fvProyecto.FindControl("tarta3D")
texto.Text = crearGraficDeTarta()
End If

Si de todos modos no lo encuentras puede ser que el control tarta3D no sea hijo directamente de fvProyecto y este contenido en otro control y sea mas bien su "nieto" y por eso no lo encuentras con el método findControl, de ser así utiliza esta función (hay que migrarla a vb) para hacer una búsqueda recursiva.

public static Control FindRecursiveControl(Control control, string id)
{
Control result = null;
foreach (Control child in control.Controls)
{
if (result != null)
break;
if (child.ID == id)
{
result = child;
break;
}
else
result = FindRecursiveControl(child, id);
}
return result;
}

La función la tendrias que llamar asi FindRecursiveControl(fvProyecto, "tarta3D")

Saludos.
__________________
Controles Web para ASP.NET (Tabstrip, Datepicker, Calendar, Panel colapsable...) en
www.enlasys.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:08.