Foros del Web » Programando para Internet » ASPX (.net) »

Colores en un datagrid

Estas en el tema de Colores en un datagrid en el foro de ASPX (.net) en Foros del Web. ¡Hola amigos! Vereis tengo un datagrid que lleno através de una clase heredada de arraylist(siento si me equivoco en algo pero no es una aplicación ...
  #1 (permalink)  
Antiguo 14/02/2006, 09:40
 
Fecha de Ingreso: junio-2005
Mensajes: 149
Antigüedad: 18 años, 11 meses
Puntos: 0
Colores en un datagrid

¡Hola amigos!

Vereis tengo un datagrid que lleno através de una clase heredada de arraylist(siento si me equivoco en algo pero no es una aplicación desarrollada por mi) y lo que quiero es cambiar el BackColor según un valorque visualiza pero la verdad es que no tengo ni idea como hacerlo. Pongo aqui lo que seria el codigo html, el codigo vb no creo que haga falta verdad. Espero que me podais ayudar porque estoy bastante perdido. Muchas gracias


<asp:DataGrid id="MyList" runat="server" OnItemCreated="GrdCarrito_ItemCreated" AutoGenerateColumns="False" BorderColor="#003366" width="650" AllowPaging="True" PageSize="15" OnPageIndexChanged="PaginarGrid" PagerStyle-Mode="NumericPages" PagerStyle-CssClass="textoazulclaro" AllowSorting="False" OnSortCommand="OrdenarGrid">
<HeaderStyle VerticalAlign="Bottom" CssClass="amarillo" BackColor="#F3EDD4" HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
<Columns>
<asp:TemplateColumn HeaderText="&nbsp;Solicitud*" SortExpression="IdSolicitud">
<HeaderStyle Width="80px" CssClass="textoazul"></HeaderStyle>
<ItemStyle CssClass="textoazulclaro"></ItemStyle>
<ItemTemplate>
&nbsp;<%# DataBinder.Eval(Container.DataItem, "IdSolicitud*") %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="&nbsp;Solicitante" SortExpression="IdSolicitante">
<HeaderStyle Width="120px" CssClass="textoazul"></HeaderStyle>
<ItemStyle CssClass="textoazulclaro"></ItemStyle>
<ItemTemplate>
<asp:Label CssClass="textoazulclaro" Runat="server" ID="Solicitante"></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="&nbsp;Cliente" SortExpression="CodCliente">
<HeaderStyle Height="18px" Width="120px" CssClass="textoazul"></HeaderStyle>
<ItemStyle CssClass="textoazulclaro"></ItemStyle>
<ItemTemplate>
&nbsp;
<asp:Label Runat="server" ID="Cliente" CssClass="textoazulclaro"></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="&nbsp;Grupo" SortExpression="CodGrupo">
<HeaderStyle Height="18px" Width="120px" CssClass="textoazul"></HeaderStyle>
<ItemStyle CssClass="textoazulclaro"></ItemStyle>
<ItemTemplate>
&nbsp;
<asp:Label Runat="server" ID="Grupo" CssClass="textoazulclaro"></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="&nbsp;SuperGrupo" SortExpression="CodSuper">
<HeaderStyle Height="18px" Width="120px" CssClass="textoazul"></HeaderStyle>
<ItemStyle CssClass="textoazulclaro"></ItemStyle>
<ItemTemplate>
&nbsp;
<asp:Label Runat="server" ID="SuperGrupo" CssClass="textoazulclaro"></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="&nbsp;Fecha" SortExpression="FechaSolicitud">
<HeaderStyle Width="100px" CssClass="textoazul"></HeaderStyle>
<ItemStyle CssClass="textoazulclaro"></ItemStyle>
<ItemTemplate>
&nbsp;<%# Left(DataBinder.Eval(Container.DataItem, "FechaSolicitud"),10) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="&nbsp;Situación" SortExpression="solicitud.IdEstado">
<HeaderStyle Width="225px" CssClass="textoazul"></HeaderStyle>
<ItemStyle CssClass="textoazulclaro"></ItemStyle>
<ItemTemplate>
&nbsp;<%# DataBinder.Eval(Container.DataItem, "Estado.Descripcion") %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="&nbsp;Presupuesto" SortExpression="Importe">
<HeaderStyle Width="100px" CssClass="textoazul"></HeaderStyle>
<ItemStyle CssClass="textoazulclaro"></ItemStyle>
<ItemTemplate>
&nbsp;<%# DataBinder.Eval(Container.DataItem, "Importe") %>&nbsp;&euro;
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
  #2 (permalink)  
Antiguo 14/02/2006, 10:58
 
Fecha de Ingreso: septiembre-2005
Mensajes: 73
Antigüedad: 18 años, 7 meses
Puntos: 0
Fondo Datagrid

Puedes usar el evento ItemdataBound del grid.
Yo lo he manejado asi:

Código:
private sub gridTareas_ItemDataBound(....)
if((e.Item.ItemType = ListItemType.Item) or (e.Item.ItemType = ListItemType.AlternatingItem)) then
if (e.Item .Cells (0).Text = "Valor") then
       e.Item .Cells (0).BackColor = System.Drawing .Color .LightSteelBlue 
       e.Item .Cells (0).ForeColor = System.Drawing .Color.DarkBlue
Bueno, algo mas o menos asi.... porque lo tengo en c#

Espero te sirva
__________________
Henry :-D
  #3 (permalink)  
Antiguo 14/02/2006, 11:22
 
Fecha de Ingreso: junio-2005
Mensajes: 149
Antigüedad: 18 años, 11 meses
Puntos: 0
La forma mas sencilla en la que habia pensado era esta:
<%#if DataBinder.Eval(Container.DataItem, "Estado.IdEstado") = 35 then %>
BackColor="#xxxx"
<%# else%>
BackColor="#F3EDD4"
<%# end if%>
pero parece ser que no puedo utilizar databinder.eval para una comparacion.
  #4 (permalink)  
Antiguo 15/02/2006, 03:01
 
Fecha de Ingreso: junio-2005
Mensajes: 149
Antigüedad: 18 años, 11 meses
Puntos: 0
Esto está bastante mejor pero no consigo acertar con la celda que busco. Si hay 8 seria la septima, he probado dandole a la variable a el valor de cada una de las celdas pero nunca tiene contenido.¿Que hago mal?

Private Sub MyList_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles MyList.ItemDataBound
Dim aa As String
If e.Item.ItemType = ListItemType.Item Or _
e.Item.ItemType = ListItemType.AlternatingItem Then
aa = CType(e.Item.Cells(6).Text, String)
If CType(e.Item.Cells(1).Text, String) = "texto a" Then
e.Item.Cells(1).BackColor = Color.Red
e.Item.Cells(1).Font.Bold = True
ElseIf CType(e.Item.Cells(6).Text, String) = "texto b" Then
e.Item.Cells(1).BackColor = Color.Red
e.Item.Cells(1).Font.Bold = True
ElseIf CType(e.Item.Cells(6).Text, String) = "texto c" Then
e.Item.Cells(1).BackColor = Color.Red
e.Item.Cells(1).Font.Bold = True
End If
End If

End Sub

Saludos!!!
  #5 (permalink)  
Antiguo 15/02/2006, 12:02
Avatar de OSRO  
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 6 meses
Puntos: 0
Por ejemplo

Yo tengo esto en el codebehind :

Código:
        If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
            If Val(e.Item.Cells(2).Text) > Val(e.Item.Cells(3).Text) Then
                e.Item.BackColor = System.Drawing.Color.YellowGreen
            ElseIf Val(e.Item.Cells(2).Text) < Val(e.Item.Cells(3).Text) Then
                e.Item.BackColor = System.Drawing.Color.OrangeRed
            End If
        End If
Y en el HTML declaro boundcolums invisibles asi:


Código:
<Columns>
								<asp:ButtonColumn Visible="False" CommandName="Select"></asp:ButtonColumn>
								<asp:BoundColumn Visible="False" DataField="clave"></asp:BoundColumn>
								<asp:BoundColumn Visible="False" DataField="cantidad"></asp:BoundColumn>
								<asp:BoundColumn Visible="False" DataField="cantidad_fac"></asp:BoundColumn>
Espero te sirva el ejemplo

Saludos

  #6 (permalink)  
Antiguo 16/02/2006, 04:43
 
Fecha de Ingreso: junio-2005
Mensajes: 149
Antigüedad: 18 años, 11 meses
Puntos: 0
Finalmente es el codigo de arriba el que me ha servido. Muchas gracias a los dos por vuestra ayuda
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 22:28.