ASP.NET - Alterando a cor de linhas do DataGrid condicionalmente


Você pode facilmente alterar a cor das linhas de um controle DataGrid sob uma condicão. Dependendo da situação isto pode dar uma aparência mais profissional a sua aplicação.

Vamos ver como fazer para chegar a este resultado neste artigo.

Eu vou suar o Web Matrix como editor de código e para testes vou usar o servidor do Web Matrix , assim , você pode acompanhar este artigo tendo apenas o .NET Framework e o Web Matrix instalados.

O banco de dados Northwind.mdb possui a tabela Customers que apresenta a seguinte estrutura:

Vamos criar uma página ASP.NET no Web Matrix para exibir os dados desta tabela acrescentando o recurso de alterar a cor das linhas do datagrid para amarelo quando o pais for igual a Brazil. A condição a ser preenchida será : Country = 'Brazil'

Abre o Web Matrix e de um nome sugestivo a página ASP.NET ; no meu caso darei o nome de gridCorLinha.aspx.

Arraste um componente DataGrid para a área de desenho do Web Matrix na guia Design. Veja a figura abaixo:

Agora vamos incluir o código VB.NET que irá acessar o banco de dados e abrir a tabela usando um DataSet e um DataAdapter

<%@ Page Language="vb" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Drawing" %>

<script runat="server">

Dim strConn as string

Sub Page_Load(Source as Object, E as EventArgs)

if not Page.IsPostBack then

     strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\northwind.mdb"

     Dim strSQL as string = "Select * from Customers"

     Dim conexao as New OleDbConnection(strConn)
     Dim ds as DataSet=New DataSet()
     Dim Cmd as New OleDbDataAdapter(strSQL,conexao)

     Cmd.Fill(ds,"Customers")

     dgClientes.Datasource=ds.Tables("Customers").DefaultView
     dgClientes.DataBind()
end if
End Sub

Sub verificaDados(sender As Object, e As DataGridItemEventArgs)

   Dim pais as String
   if e.Item.ItemType.ToString="Item" or e.Item.ItemType.ToString="AlternatingItem"
         pais=e.Item.Cells(8).text
         if
pais = "Brazil" then
             
  e.Item.Backcolor = Color.FromName("yellow")
         End If
    End If
End Sub

</script>

No evento Load da página estamos efetuando a conexão com banco de dados northwind.mdb e preenchendo o dataset com todos os dados da tabela Customers.

A rotina verificaDados() é a responsável por testar a condição estabelecida , country = 'Brazil' , e fazer a alteração da linha quando a mesma for atendida.

Note que foi criada uma variável do tipo string chamada pais para armazenar o valor que será obtido da célula . Veja na figura abaixo

É claro que você pode usar o recurso de forma dinâmica permitindo a parametrização das condições verificadas. Basta usar o seu talento.

Veja o exemplo funcionando aqui : alterando a cor das linhas de um datagrid

Pegue o código do exemplo aqui : gridCorLinha.aspx

Eu sei é apenas ASP.NET , mas eu gosto...


José Carlos Macoratti