Mi promosito es conseguir hacer un aspTable que tengo en un control usuario web (fotos.ascx.cs) cargue otro control usuario web (visualizadorfotos.ascx.cs) en cada celda de mi aspTable. El problema es que no se me carga nada, al final se queda la página index.aspx en blanco (aclarandolo un poco más, en mi index.aspx tengo un aspPanel llamado pnlContenido que es lo que se queda vacío. En definitiva utilizo paneles a forma de marcos... por así decirlo)
Os pongo aquí el código, si no me explicado bien me avisaís y vuelvo a intentarlo. Ah!! todo esto lo hago a medida de hacer un album de fotos para mi web... por lo que si teneís mejores ideas para hacerlo...
Aquí os dejo el código:
---fotos.ascx.cs-------
Código PHP:
public class Fotos : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Table tblAlbum;
private int idioma=0;
private int numeroColumnas;
private int totalElementos;
#region Propiedades
/// <summary>
/// Propiedad que establece el número de columnas que queremos por fila
/// </summary>
public int NumeroColumnas
{
set
{
this.numeroColumnas = value;
}
get
{
return this.numeroColumnas;
}
}
/// <summary>
/// Propiedad que establece el número total de tuplas de la Tabla FOTOS.
/// </summary>
public int TotalElementos
{
set
{
this.totalElementos = value;
}
get
{
return this.totalElementos;
}
}
public int Idioma
{
set
{
this.idioma=value;
}
get
{
return this.idioma;
}
}
#endregion
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
this.CargaContenido();
else
this.Reload();
}
private void CargaContenido()
{
AccesoBD.SQL bd = new colegioWeb.AccesoBD.SQL();
System.Data.DataTable tabla=null;
System.Data.DataRow datafila=null;
tabla= bd.GetFotosCastellano();
if(tabla!=null)
{
int celdas= tabla.Rows.Count;
this.NumeroColumnas = 4;
int filas = celdas / this.NumeroColumnas;
if((celdas % this.NumeroColumnas)!=0)
filas++;
int j = 0;
int k = 0;
for (int i = 0; i < filas; i++)
{
TableRow r = new TableRow();
//for(int j = 0; j<celdas; j++)
while ( j < celdas) //nos movemos por las celdas
{
//for(int k = 0;k< tabla.Rows.Count;k++)
foreach(DataRow fotos in tabla.Rows)
{
TableCell c = new TableCell();
VisualizadorFotos visualizador = (VisualizadorFotos)this.LoadControl("VisualizadorFotos.ascx");
visualizador.Fotos = fotos;
c.Controls.Add(visualizador);
r.Cells.Add(c);
j++;
}
}
this.tblAlbum.Rows.Add(r);
}
}
}
private void Reload()
{
this.Controls.Clear();
this.CargaContenido();
}
Código PHP:
public class VisualizadorFotos : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Image imgFoto;
protected System.Web.UI.WebControls.Label lbTitulo;
protected System.Web.UI.WebControls.HyperLink hpEnlace;
protected System.Web.UI.WebControls.Table tblFotos;
private DataRow fotos;
public DataRow Fotos
{
set
{
this.fotos=value;
}
get
{
return this.fotos;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
// Introducir aquí el código de usuario para inicializar la página
if(this.fotos!=null)
{
this.lbTitulo.Text = this.fotos["titulo"].ToString();
string ruta = "../" + this.fotos["enlace"].ToString();
this.imgFoto.ImageUrl= ruta;
this.imgFoto.Width= new Unit("100px");
this.imgFoto.Height= new Unit("85px");
this.hpEnlace.NavigateUrl = ruta;
this.hpEnlace.ToolTip = this.fotos["descripcion"].ToString();
}
}