• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

skcratch

[Resolvido] C# - Como adicionar um evento programaticamente a uma GridView

9 mensagens neste tópico

Viva!

Gostaria de saber como posso adicionar um determinado evento de forma programática, isto é, em código C# a uma determinada GridView.

Grato desde já pela ajuda,

Cumps!

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi a dúvida. É isto?

minhaGridView.evento += funcao_de_evento;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Sim, é algo semelhante a isso. No meu caso, a GridView é criada em execução, já que tenho múltiplas possibilidades de resultados. Neste momento, o que queria tratar era o evento de ordenação. Existe algum nome pré-definido em função do identificador da GridView ou posso usar uma aproximação semelhante à tua?

Grato desde já pela ajuda,

Cumps!

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os eventos da GridView são EventHandlers.

Quando associares um método ao evento, tem q ser do tipo Event Handler.

Podes fazer como já te foi indicado, ou assim:

minhaGridView.evento += new EventHandler(MeuMetodo).

Se tiveres a usar o Visual Studio fazes:

minhaGridView.evento += (TAB) (TAB)

e ele dá-te uma ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Funcionou na perfeição! Quando faço debug já não aparece a excepção a dizer que o evento não está a ser tratado.

O código de teste que tenho, é o seguinte:

protected void Page_Load(object sender, EventArgs e)
    {
        string[] arrayCarros = { "Ford", "Opel", "Audi", "Mercedes" };
        gvCarros.DataSource = arrayCarros;

        gvCarros.AllowSorting = true;
        gvCarros.Sorting += new GridViewSortEventHandler(gvCarros_Sorting);
        gvCarros.DataBind();
    }

    protected void gvCarros_Sorting(object sender, GridViewSortEventArgs e)
    { 
        
    }

Caso tenham alguma sugestão, é sempre bem-vinda!

Grato desde já pela ajuda,

Cumps!

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para ordenar podes fazer Array.Sort(arrayCarros).

Não te esqueças q entre postbacks não tens o array guardado só por si, tens q o voltar a ir buscar ou guardar em ViewState ou Sessão, conforme for indicado p o teu caso.

Tens tb q voltar a afectar o datasource do grelha e um novo databind.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Essa parte do ViewState ou Sessão não percebi muito bem. Será que me podias dar um exemplo mais concreto ou baseado no meu? Quando lanço a aplicação, aparece logo a GridView correctamente preenchida; depois de clicar no Item (Nome da coluna onde são listados os carros), gostaria que a GridView aparecesse com os elementos ordenados.

Grato desde já pela ajuda,

Cumps!

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Informa-te no google para saberes o q é o ViewState ou Session.

Para os teres acessiveis na tua página podes declarar uma propriedade e redefinir o seu get e set.

Exemplo:

private string[] MeusCarros{

get{return ViewState["carros"] == null ? null : ViewState["carros"] as string[];}

set{ViewState["carros"]=value;}

}

Para Sessao é igual, só precisas de mudar ViewState por Session.

Para o caso do viewstate o tipo precisa de ser serializavel, as string já são.

Depois onde tens:

string[] arrayCarros = ...

trocas por:

MeusCarros = ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Depois faço uma procura mais exaustiva no google amanhã, muito obrigado pela tua ajuda.

Cumps!

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora