Coluna Booleana no DataGrid

Quando exibimos um conteúdo de uma tabela em um DataGrid e algum dos campos da mesma é uma coluna do tipo Booleana, muitas vezes precisamos dar ao usuário uma mensagem mais amigável do que um simples "True" ou "False".

 

Neste caso, utilizamos o evento ItemDataBound do DataGrid e assim conseguimos interceptar o Bind no DataGrid, e com isso, verificamos o valor do campo booleano, personalizando assim, a mensagem ao usuário.

 

O que devemos fazer é depois de arrastar o DataGrid para o nosso WebForm, temos que ir até o Property Builder e consequentemente adicionar coluna booleana para ser exibida, que no caso deste exemplo chama-se "Status". Vejamos abaixo o código necessário para isso:

 

  Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As _

    System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound

 

    If e.Item.ItemType = ListItemType.AlternatingItem OrElse _

        e.Item.ItemType = ListItemType.Item Then

 

        If Convert.ToBoolean(DirectCast(e.Item.DataItem, DataRowView).Item("Status")) Then

            e.Item.Cells(1).Text = "Cliente ativo."

        Else

            e.Item.Cells(1).Text = "Cliente desabilitado."

        End if

    End if

End Sub

 

Vale chamar a atenção para a condicional que fazemos, ou seja, convertermos o DataItem (que no caso do Exemplo, a fonte de dados é um Dataset, logo, o DataItem será um DataRowView para booleano, e assim, se for verdadeiro exibimos uma mensagem, dizendo que o cliente está ativo, caso contrário, informamos que o cliente está desabilitado. Observem que "escrevemos" isso na célula 1, que corresponde à célula onde seria exibido o campo "Status", mas claro, em seu valor original ("True/False").