Ir para conteúdo

POWERED BY:

Arquivado

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

eusoufeioedai

[Resolvido] Não consigo atualizar o commandArgument de cada LinkButton

Recommended Posts

Olá !!!

 

Eu coloquei uma rotina de filtro onde os clientes são filtrados pela primeira letra do nome ex [A][C]...

Quando eu clico em qualquer campo "Atualizar" no GridView o valor "id" do Cliente é exibido corretamente. Quando eu

clico no filtro e reconstruo o GridView e em seguida eu clico em "Atualizar" o valor exibido não é o correto.

É como se a propriedade "CommandArgument" de cada "LinkButton" não fosse atualizada.

 

Já tentei zerar o GridView e mesmo assim continuo com problemas.

 

 

Criei o seguinte GridView:

----------------------

Filtro: [A][C][D]...

<br>

                        <asp:GridView 
                             runat="server" 
                             id="lista_clientes" 
                             AutoGenerateColumns="false" 
                             OnRowCommand="editar_registro"
                             OnRowDataBound="GridRowDataBound"
                              DataKeyNames="id"
                             >
                             <Columns>
                                    <asp:TemplateField>
                                         <ItemTemplate>
                                              <asp:LinkButton  ID="Atualizar"  runat="server" CommandName="Atualizar" CommandArgument='<%# Eval("id") %>' Text='Atualizar'/>
                                         </ItemTemplate>
                                    </asp:TemplateField>                     
                                    <asp:BoundField DataField="nome" HeaderText="Cliente" SortExpression="Nome"></asp:BoundField>
                                    <asp:TemplateField>
                                         <ItemTemplate>
                                             <asp:LinkButton id="Excluir" runat="server" CommandName="Excluir" CommandArgument='<%# Eval("id")%>' Text="Excluir"  OnClientClick="return confirm('Tem certeza que deseja excluir o registro selecionado ?');"/>
                                         </ItemTemplate>
                                    </asp:TemplateField>

                             </Columns>
                        </asp:GridView>

 

-----------

 

 

Cada botao do Filtro esta chamando o seguinte método:

----------------

void  filtrar(System.Object o,  CommandEventArgs e){
			   lista_clientes.DataSource = carregarClientes("Select id, nome from cliente where nome like '"+ e.CommandArgument +"%' order by nome");
			   lista_clientes.DataBind();
	  }
--------------

 

 

Como é que eu faço para corrigir a atualização do LinkButton de cada linha do GridView ?

 

Valeu !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá !!

 

Quando a página carrega pela primeira vez O GridView é preenchido com todos os clientes cadastrados.

Cada linha de cliente possui dois "<asp:LinkButton", Um "Atualizar" e um "Excluir", onde a sua propriedade "CommandArgumet" eu atribuí o "id" do

cliente cadastrado. Quando eu clico em cada botao eu consigo recuperar, no evento OnRowCommand, o id do cliente específico.

 

Por uma questão de facilidade, adicionei uma rotina de filtro acima do GridView no seguinte formato:

 

[A][C][D][E][F][G][H][J][L][M][N][O][P][Q][R][T][V][X][Z].

 

O usuário clica em uma das letras e o GridView é reconstruído filtrando todos os clientes que começam com a letra escolhida.

 

O problema acontece aí. Quando o GridView é reconstruído, os Links "Atualizar" e "Excluir" não são atualizados. Os valores do CommandArgument são

os valores antigos. E quando eu clico neles o cliente selecionado é outro.

 

trecho de código que recupera o valor do cliente em C#

------------------

void selecionarCliente(Object o, GridViewCommandEventArgs e){
			 if(e.CommandName=="Atualizar"){
					  Response.Write(e.CommandArgument);
				  }
			 else{
					 Response.Write(e.CommandArgument);
			}
		}
------------------

 

 

 

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá !!

 

 

Consegui resolver o problema.

Eu adicionar o "if (!IsPostBack)" no evento Page_Load.

Encontrei a resposta no seguinte link:

http://forums.microsoft.com/MSDN-BR/ShowPo...21&pageid=0

 

 

O código ficou da seguinte forma:

------------------

void Page_Load(System.Object o, System.EventArgs e){
					  if (!IsPostBack){
						   lista_clientes.DataSource = carregarClientes("Select id, nome from ext_cliente order by nome");
						   lista_clientes.DataBind();
					   }
	  }
-------------------

 

 

Valeu !!!

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.