Você está aqui: Página Inicial Artigos Tecnologia ASP.NET: Impedindo que o Gridview faça DataBind automaticamente

ASP.NET: Impedindo que o Gridview faça DataBind automaticamente

No desenvolvimento em ASP.NET, muitas vezes você precisa criar uma tela de pesquisa que possua alguns filtros e um gridview para exibir o resultado. Temos uma sugestão para impedir que o gridview se popule automaticamente, mesmo antes que os filtros tenham sido preenchidos.

Já passamos por vários situações no desenvolvimento em ASP.NET onde tínhamos um GridView vinculado a um ObjectDataSource, mas queríamos que o GridView executasse o DataBind apenas depois que um botão "Pesquisar" tivesse sido pressionado pelo menos uma vez.

Em grande parte das situações, deixar o GridView invisível (declarando-o com visible="false") é suficiente para obter o efeito desejado, bastando para isso incluir no evento Click do botão uma instrução para tornar o grid visível.

No entanto, existem casos onde isso não é suficiente. Um exemplo é quando o GridView em questão está dentro de um UserControl (componente .ascx) e esse UserControl é inserido dentro de uma das colunas de outro GridView. Nesta situação, o DataBind do GridView dentro do UserControl vai ser executado uma vez para cada linha que contiver o GridView pai.

Um recurso que usamos neste caso, é fazer um override do método DataBindChildren() do UserControl:

    Protected Overrides Sub DataBindChildren()
        If Me.pnlMain.Visible Then
            MyBase.DataBindChildren()
        End If
    End Sub

Basta colocar uma condição que impeça que MyBase.DataBindChildren() seja executado em qualquer situação. Neste caso, estamos fazendo com que os DataBinds sejam executados apenas se um componente chamado "pnlMain" esteja visível. No evento Click do botão "Pesquisar", incluímos um código do tipo "pnlMain.Visible = True" e o UserControl passa a funcionar exatamente como o esperado.



Ações do documento
« Fevereiro 2012 »
Fevereiro
SeTeQuQuSeSaDo
12345
6789101112
13141516171819
20212223242526
272829
Acessar


Esqueceu sua senha?