Access - ASP.net lanza 2 paginas distintas

 
Vista:

ASP.net lanza 2 paginas distintas

Publicado por Maxus (1 intervención) el 05/06/2007 17:53:19
Hola a todos LISTEROS :D

Tengo un problema con un proyecto web desarrollado en ASP.net 2. El tema es el siguiente:

La pagina web consta de un menu de administracion en el que se pueden agregar items a la base de datos. De la base de datos, para el problema que tengo solo importa una tabla, un poco peculiar:

La tabla tiene los siguientes campos: idPestana, Imagen, Titulo, Contenido y PestanaID. Esta tabla esta relacionada uno a muchos con ella misma para conseguir una recursividad, permito valores nulos en PestanaIDy Contenido.

Bien, ahora tengo una pagina aspx, en la que quiero cargar todas las subpaginas de la Web, es decir, que dependiendo del resultado que tenga, pues muestre unas pestañas u otras y eso ya esta conseguido.... Ahora viene mi duda:

Yo tengo 2 plantillas DataList con Repeater, y lo que quiero es que en funcion de la consulta utilice una u otra, es decir, que si en la consulta, el registro tiene contenido utilize una plantilla y si el campo contenido esta a NULL pues que utilize otra.

Por favor, agradeceria muchisimo que me ayudasen.

Un saludo y Muchisisisisisisismas GRACIAS POR ADELANTADO :D
--
Juan de la Cruz Arellano Royo
Técnico Superior
Administrador de Sistemas Informáticos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Mostrar contenido de acuerdo a condiciones en una página web ASP.NET

Publicado por Alejandro (4142 intervenciones) el 11/08/2023 20:19:39
En ASP.NET, puedes lograr lo que deseas utilizando un control Repeater o DataList con plantillas condicionales. En tu caso, quieres mostrar diferentes plantillas en función de si un campo `Contenido` está nulo o no. Aquí tienes un enfoque general para lograrlo:

1. Plantillas de control:
Primero, asegúrate de que tienes las dos plantillas de control (una para cuando hay contenido y otra para cuando no hay contenido) definidas en tu página ASP.NET. Puedes usar controles `<asp:Repeater>` o `<asp:DataList>` y definir las plantillas con controles `<ItemTemplate>` y `<AlternatingItemTemplate>`, según tus necesidades.

2. Enlace de datos:
En tu código detrás (C# o VB.NET), consulta la base de datos para obtener los registros que deseas mostrar en tus pestañas. Puedes utilizar ADO.NET u otros métodos de acceso a datos.

3. Determinar la plantilla:
Para cada registro obtenido de la base de datos, verifica si el campo `Contenido` está nulo o no. En función de esta condición, selecciona la plantilla apropiada para usar en el control Repeater o DataList.

4. Enlazar el control:
Una vez que hayas determinado la plantilla a utilizar para cada registro, enlaza los datos al control Repeater o DataList. Asegúrate de usar la propiedad `ItemTemplate` o `AlternatingItemTemplate` según corresponda.

Aquí tienes un ejemplo en C# para ilustrar cómo podrías implementar esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
protected void Page_Load(object sender, EventArgs e)
{
    // Consulta la base de datos y obtiene los registros
    // Supongamos que result es una lista de objetos con campos como idPestana, Imagen, Titulo, Contenido y PestanaID
 
    // Enlaza los datos al control
    repeater.DataSource = result;
    repeater.ItemDataBound += Repeater_ItemDataBound;
    repeater.DataBind();
}
 
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        // Accede al objeto de datos actual
        var dataItem = e.Item.DataItem as YourDataType; // Reemplaza YourDataType con el tipo de tus datos
 
        // Verifica si el campo Contenido está nulo o no y selecciona la plantilla apropiada
        var template = dataItem.Contenido != null ? e.Item.FindControl("PlantillaConContenido") : e.Item.FindControl("PlantillaSinContenido");
 
        // Aplica la plantilla seleccionada
        template.Visible = true;
    }
}

Asegúrate de adaptar este código a tu proyecto y reemplazar `YourDataType`, `"PlantillaConContenido"` y `"PlantillaSinContenido"` con los nombres adecuados según tu implementación.

Este enfoque te permitirá mostrar diferentes plantillas en función de la presencia de contenido en tus registros de base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar