DefaultButton dentro do GridView


Uma das coisas que me perguntam é como implementar o DefaultButton em um Form/Panel quando estamos em uma edição dentro de um controle DataBound, como é o caso do GridView.

Para fazer isso funcionar, não tem lá muito segredo: basta interceptar a renderização do controle no evento PreRender e verificar se o mesmo está em modo de edição. Para isso, podemos utilizar a propriedade EditIndex, que retorna um valor inteiro indicando se o GridView está com algum linha em mode de edição. Caso esteja, voce acessa a linha em questão e procura pelo controle (button) que deverá ter seu evento Click disparado quando a tecla Enter for pressionada. Quando encontrado, voce recupera a propriedade UniqueID e atribui a mesma na propriedade DefaultButton do Form/Panel. Um exemplo simples é mostrado abaixo:

protected void GridView1_PreRender(object sender, EventArgs e)
{
    if (this.GridView1.EditIndex > -1)
    {
        this.form1.DefaultButton =
            this.GridView1.Rows[this.GridView1.EditIndex].Cells[0].Controls[0].UniqueID;
    }
}

A propriedade UniqueID retorna uma string representando o nome do controle (e, neste caso, do botão de edição) dentro da hierarquia de sub-controles dos controles DataBound.

Anúncios

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