ASP.NET GridView - Parte 5

watch_later 20 de abr de 2013
Como definir dinamicamente a visibilidade de um controle dentro ItemTemplates de um GridView


Se você quiser esconder um campo ou controle com base em algum valor condicional, você pode fazê-lo a partir do code-behind ou seu campo pode ter ajuda de uma expressão de ligação (Binding)

Se você está seguindo a abordagem de code-behind, em primeiro lugar, você precisa encontrar o valor de controle durante o RowDataBound do GridView. Uma vez que o seu GridView tenha controles, você pode definir a visibilidade do controle com base na condição que você deseja aplicar.

O exemplo abaixo mostra escondendo um LinkButton com base em algumas condições:


protected void myGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        Customer cust = e.Row.DataItem as Customer;
        if (!cust.ShowURL)
        {
            LinkButton lnkWebURL = e.Row.FindControl("lnk") as LinkButton;
            if (lnkWebURL != null)
            {
                lnkWebURL.Visible = false;
            }
        }
    }
}


Bem, você pode conseguir a mesma coisa de uma forma inteligente, usando apenas uma expressão de ligação (Binding). Podemos usar uma expressão condicional dentro de uma expressão de ligação (Binding) do GridView. Então o que você escreve no code-behind pode ser substituído por:



Isso irá primeiro avaliar o valor de "ShowUrl" e, em seguida, definir a propriedade Visible do GridView.

Outras Postagens do GridView

ASP.NET GridView - Parte 1
ASP.NET GridView - Parte 2
ASP.NET GridView - Parte 3
ASP.NET GridView - Parte 4
ASP.NET GridView - Parte 6