Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipe maricato moura

executar uma função atravez de um gridwiew

Recommended Posts

Existe como eu fazer o seguinte, tenho um gridwiew com um campo select ou button quando eu clicar neste botão da gridwiew ser executado uma função no código que recebe o id correspondete a linha do registro?ex: cliquei em uma linha chamei uma função e recebi como paramentro o id daquela linha para ir ao banco de dados.existe como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom ninguem respondeu mas eu consegui aprender com algumas dicas de uma maigo meu

 

existerm várias formas de executar metódos de servidor e métodos java script atravez de uma gridwiew

 

vamos lá:

 

na gridwiew existem diversos eventos um deles é o OnRowCommand esse atributo da nome ao método que vai interseptar no postback da página o click em buttons ou linksbuttons (por exemplo), quando forem clicados.

<asp:GridView

...

OnRowCommand = "GridView1_RowCommand"

...

>

GridView1_RowCommand = é o nome do método a ser chamdo quando as linhas forem clicadas

dentro da gridwiw temos o campo template com o linkbutton:

 

<Columns>

<asp:TemplateField>

<ItemTemplate>

<asp:LinkButton ID="editar"

CommandArgument='<%# Eval("id_noticia") %>'

CommandName="editar" runat="server" CausesValidation="false">

Editar Notícia

</asp:LinkButton>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField>

<ItemTemplate>

<asp:LinkButton ID="deletar"

CommandArgument='<%# Eval("id_noticia") %>'

CommandName="deletar" runat="server" CausesValidation="false">

Deletar Notícia

</asp:LinkButton>

</ItemTemplate>

</asp:TemplateField>

</Columns>

neste caso em espesífico temos duas colunas sem falar as que vem do banco atravez do objectDataSource

 

</asp:GridView>

Sendo assim então devemos escrever o método para pegar os valores

OBS: TODOS OS CAMPOS TEMPLATES VAÕ SER INTERSEPTATODOS PELOS MESMOS MÉTODOS

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)

{

 

//Response.Write(e.CommandArgument.ToString());

//Response.Write(e.CommandName.ToString());

 

if (e.CommandName.ToString() == "editar")

{

//manda para o método que edita

this.editar(e.CommandArgument.ToString());

//depois de editar reescreve a grid

GridView1.DataBind();

}

else

{

//manda para a classe para deletar

noticias.delete_noticias(e.CommandArgument.ToString());

//depois de deletar reescreve a grid

GridView1.DataBind();

 

}

 

}

Percebam que o nome da função é o mesmo que o do atributo OnRowCommand.

 

O legal de observar é o parâmetro GridViewCommandEventArgs e que permitirá a nós acessarmos os atributos dento do linkbutton

ex:

//Response.Write(e.CommandArgument.ToString());

//Response.Write(e.CommandName.ToString());

Como esse eventro intercepta todas as linhas e colunas clicadas na gridwiew então se faz necessário o teste para identificar o que deve ser feito

 

if (e.CommandName.ToString() == "editar") {

//rodar a rotina de ediçaõ

} else if (e.CommandName.ToString() == "deletar") {

//rodar a rotina de deleção

}

É por isso que colocarmos no linkbuttons dentro dos campos templates valores diferentes para os atributos

CommandName

ID

CommandArgument

 

Vale lembrar que o CommandArgument serve para colocarmos os valores que desejamos passar para as funções no meu caso (e no de muitas pessoas) é o id da tupla que eu desejo editar na tabela

CommandArgument='<%# Eval("id_noticia") %>'

dentro do método do servidor basta um e.CommandArgument para acessar o valor (id)

 

Caso alguém tiver a necessidade de passar diversas dados no CommandArgument recomento suar serialização, separar por , | @ $ * & # ou sei lá o que

 

espero que ajude alguém isso que eu escrevi

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.