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

intercambiar estilos o clases entre renglones de un datagrid

Estas en el tema de intercambiar estilos o clases entre renglones de un datagrid en el foro de .NET en Foros del Web. hola! Tengo el siguiente DataGrid: Código: <asp:datagrid id="dgNoticias" runat="server" PageSize="20" AllowPaging="True" ShowHeader="False" AutoGenerateColumns="False" BorderStyle="None" GridLines="None" CssClass="UH"> <Columns> <asp:TemplateColumn> <ItemTemplate> <div class="uhEven"> <div id="hora"><b> <asp:Label ID="Label1" ...
  #1 (permalink)  
Antiguo 22/12/2006, 13:32
 
Fecha de Ingreso: mayo-2006
Mensajes: 243
Antigüedad: 18 años
Puntos: 0
Pregunta intercambiar estilos o clases entre renglones de un datagrid

hola!

Tengo el siguiente DataGrid:

Código:
<asp:datagrid id="dgNoticias" runat="server" PageSize="20" AllowPaging="True" ShowHeader="False" AutoGenerateColumns="False" BorderStyle="None" GridLines="None" CssClass="UH">
     <Columns>
          <asp:TemplateColumn>
               <ItemTemplate>
                    <div class="uhEven">
                         <div id="hora"><b>
                              <asp:Label ID="Label1" Text ='<%# DataBinder.Eval(Container, "DataItem.horaalta") %>' runat="server"></asp:Label>
                        </b></div>
                        <asp:HyperLink ID="HyperLink1" CssClass = "lista" runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.detalle") %>'><%# DataBinder.Eval(Container, "DataItem.titulo") %></asp:HyperLink>
                    </div>
               </ItemTemplate>
               <EditItemTemplate>
                    <div class="uhOdd">
                    <div id="hora"><b>
                         <asp:Label ID="Label2" Text ='<%# DataBinder.Eval(Container, "DataItem.horaalta") %>' runat="server"></asp:Label>
                    </b></div>
                    <asp:HyperLink ID="HyperLink2" CssClass = "lista" runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.detalle") %>'><%# DataBinder.Eval(Container, "DataItem.titulo") %></asp:HyperLink>
                  </div>
                </EditItemTemplate>
            </asp:TemplateColumn>
        </Columns>
        <PagerStyle Visible="False" ></PagerStyle>
</asp:datagrid>
supuse que así puedo intercambiar la clase: <div class="uhEven"> y <div class="uhOdd"> entre un renlon y otro, pero no funciona.

qué puedo hacer para que me respete un div con una clase diferente por cada dos renglones?

Gracias!
  #2 (permalink)  
Antiguo 26/12/2006, 15:21
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Re: intercambiar estilos o clases entre renglones de un datagrid

puedes usar el AlternatingItemTemplate...
ejemplo:

Cita:
<ItemTemplate>
<div class="uhEven">
<div id="hora"><b>
<asp:Label ID="Label1" Text ='<%# DataBinder.Eval(Container, "DataItem.horaalta") %>' runat="server"></asp:Label>
</b></div>
<asp:HyperLink ID="HyperLink1" CssClass = "lista" runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.detalle") %>'><%# DataBinder.Eval(Container, "DataItem.titulo") %></asp:HyperLink>
</div>
</ItemTemplate>
<AlternatingItemTemplate>
<div class="otroDiv">
<div id="hora"><b>
<asp:Label ID="Label1" Text ='<%# DataBinder.Eval(Container, "DataItem.horaalta") %>' runat="server"></asp:Label>
</b></div>
<asp:HyperLink ID="HyperLink1" CssClass = "lista" runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.detalle") %>'><%# DataBinder.Eval(Container, "DataItem.titulo") %></asp:HyperLink>
</div>
</AlternatingItemTemplate>
Espero te sirva.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 02/01/2007, 11:14
 
Fecha de Ingreso: mayo-2006
Mensajes: 243
Antigüedad: 18 años
Puntos: 0
Re: intercambiar estilos o clases entre renglones de un datagrid

Gracias por la respuesta, pero en el datagrid no me aparece la opción de agregar un <AlternatingItemTemplate>

=(
  #4 (permalink)  
Antiguo 02/01/2007, 15:50
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Re: intercambiar estilos o clases entre renglones de un datagrid

sorry, por un momento pensé que lo necesitabas para un DatagridView, en tu caso puedes crear una funcion que te regrese el dato que necesitas.

Ejemplo:

....
...
<div class='<%# GetCustomClass() %>'>
<div id="hora"><b>
<asp:Label ID="Label1" Text ='<%# DataBinder.Eval(Container, "DataItem.horaalta") %>' runat="server"></asp:Label>
</b></div>
<asp:HyperLink ID="HyperLink1" CssClass = "lista" runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.detalle") %>'><%# DataBinder.Eval(Container, "DataItem.titulo") %></asp:HyperLink>
</div>
...

en el codebehind:

Código:
private bool bln = false;
string GetCustomClass ()
{
     if (bln) {
         bln = false;
         return = "uhEven";
     }

     bln = true;
     return "otroDiv";
}
Esa sería la idea, espero que te sirva.

Salu2
  #5 (permalink)  
Antiguo 30/03/2007, 14:02
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
Re: intercambiar estilos o clases entre renglones de un datagrid

¿Se podría hacer algo parecido tanbién en un DataGrid (en C#) para mostrar una imagen referente al registro recorrido según el valor del campo en la tabla de la base de datos, y si el campo está vacío mostrar una imagen predefinida?

Yo, dentro del DataGrid, para mostrar la imagen de cada registro, hago esto:

Código:
<asp:TemplateColumn HeaderText="Cartel">
	<ItemTemplate>
		<div align="center">
		<a href="adm_modpeli.aspx?idpeli=<%# DataBinder.Eval(Container.DataItem, "peli_id")%>" title="<%# DataBinder.Eval(Container.DataItem, "peli_tit")%>"><img alt="<%# DataBinder.Eval(Container.DataItem, "peli_tit")%>" src="imags/pelis/<%# DataBinder.Eval(Container.DataItem, "peli_cartel")%>" style="border: 0; width: 64px; height: 95px"></a>
		</div>
	</ItemTemplate>
</asp:TemplateColumn>
Lo que quiero, como ya he comentado, sería mostrar una imagen [img_noexiste.jpg] por ejemplo si el campo [peli_cartel] estuviera vacío
__________________
Saludos,

zacktagnan.
=================================================
  #6 (permalink)  
Antiguo 30/03/2007, 16:35
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Re: intercambiar estilos o clases entre renglones de un datagrid

Puedes hacer una función que reciba el dato, lo validas y regresas la imágen, ejemplo:


Código:
protected string GetImage (string m_image) {

        return (string.IsNullOrEmpty( m_image ) )? "" : m_image

}
y la funcion la llamas desde tu HTML quedando de ésta forma

Cita:
...
...<img alt="<%# DataBinder.Eval(Container.DataItem, "peli_tit")%>" src="imags/pelis/<%# GetImage ( Convert.ToString( DataBinder.Eval(Container.DataItem, "peli_cartel"))) %>" style="border: 0; width: 64px; height: 95px">
....
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #7 (permalink)  
Antiguo 30/03/2007, 18:40
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
Re: intercambiar estilos o clases entre renglones de un datagrid

Pues gracias RootK por la función. He logrado el resultado que quería:
mostrar una imagen por defecto, cuando el registro no tiene asignada una al campo de la tabla.

He tenido que cambiar un poco el código porque lo del IsNullOrEmpty no me sale tras string.. Así que lo he dejado de esta forma:

Código:
	protected string GetImage (string m_image) 
	{
		if(m_image == null || m_image == "")
		{
			return "sin_imag.png";
		}
		else
		{
			return m_image;
		}
	}
Gracias de nuevo.
__________________
Saludos,

zacktagnan.
=================================================
  #8 (permalink)  
Antiguo 02/04/2007, 10:22
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Re: intercambiar estilos o clases entre renglones de un datagrid

Cita:
Iniciado por zacktagnan
He tenido que cambiar un poco el código porque lo del IsNullOrEmpty no me sale tras string..
El IsNullOrEmpty viene a partir del framework 2.0 y al parecer tu estás trabajando con 1.1 y es válido también lo que estás haciendo.

Salu2 y que bueno que ya lo solucionaste.
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 13:36.