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:

1
2
3
4
5
6
7
8
9
10
11
12
13
 
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 mais informações sobre isso, visite este link)) 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”).

Anúncios

2 comentários sobre “Coluna Booleana no DataGrid

  1. Olá to precisando algo assim mais em C# para windows forms. Caso poder me ajudar me manda um email.
    Grato.

    • Boas Ben-hur,

      Você pode utilizar o evento CellFormatting:

      private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
      {
      e.Value = Convert.ToBoolean(e.Value) ? "Cliente Ativo" : "Cliente Inativo";
      }

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s