none
Como eu disparo o click do meu button dentro do meu GridView ? RRS feed

  • Discussão Geral

  • Como eu disparo o click do meu button dentro do meu GridView ?

    <asp:GridView ID="gwDados" runat="server" AutoGenerateColumns="False" Width="400px"
                EmptyDataText="Não Existem Jogos Marcados..." CssClass="Grid" OnRowDataBound="gwDados_RowDataBound">
                <Columns >
                    <asp:BoundField DataField="TIME" HeaderText="Time"  HeaderStyle-Width="200px"/>
                    <asp:BoundField DataField="DATAJOGO" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Data" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"/>
                    <asp:BoundField DataField="HORAJOGO" HeaderText="Horario" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"/>
                    <asp:BoundField DataField="TIMED" HeaderText="Time Desafiante" HeaderStyle-Width="200px" FooterStyle-HorizontalAlign="Center"  />
                    <asp:ButtonField HeaderText="Status" ButtonType="Button" Text="Aceitar Desafio" 
                        ControlStyle-BackColor="White" ControlStyle-ForeColor="Black" FooterStyle-HorizontalAlign="Center"
                         ItemStyle-HorizontalAlign="Center"  />
                </Columns>
            </asp:GridView>
                   
                

    • Editado Marcos SJ sexta-feira, 6 de maio de 2016 10:19 Edição
    • Tipo Alterado Marcos SJ sexta-feira, 6 de maio de 2016 10:20 How to
    sexta-feira, 6 de maio de 2016 03:05

Todas as Respostas

  • Bom dia,

    Segue um exemplo:

    http://stackoverflow.com/questions/14254880/how-to-get-row-data-by-clicking-a-button-in-a-row-in-an-asp-net-gridview

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 6 de maio de 2016 11:54
  • Boa Tarde Silvanei

    O exemplo no link esta com o Button comum e não o ButtonField.

    Então dessa forma eu não consigo  usar o OnClick=""

    Como eu resolvo isso ?

    Fico no aguardo.

    Obrigado

     <asp:ButtonField HeaderText="Status" ButtonType="Button" Text="Aceitar Desafio" 
                        ControlStyle-BackColor="White" ControlStyle-ForeColor="Black" FooterStyle-HorizontalAlign="Center"
                         ItemStyle-HorizontalAlign="Center"   />

    terça-feira, 10 de maio de 2016 17:34
  • Crie um TemplateField e coloque um Button dentro com a seguinte código:

    <asp:TemplateField HeaderText="Alterar" ShowHeader="False">
          <ItemTemplate>
               <asp:Button ID="Button1" runat="server" CausesValidation="false" CommandArgument='<%#Bind("Id") %>' CommandName="Alterar" Text="Alterar" />
         </ItemTemplate>
    </asp:TemplateField>

    Observer que no CommandArgument eu coloque um marca do servidor para saber na hora do submit do botão qual foi selecionado. Seria no caso a identificação!

    Vai no seu GridView e crie um envento: GridImagens_RowCommand

    protected void GridImagens_RowCommand(object sender, GridViewCommandEventArgs e)
    {
         if (e.CommandName.Equals("Alterar"))
         {
             LblEscolhido.Text = e.CommandArgument.ToString();
         }
    }

    Esse evento é responsável de te informar qual botão foi clicado!

    Exemplo completo Github:

    1 - https://github.com/netdragoon/helpWebForms/blob/master/WebApplication1/WebFormImagem.aspx

    2 - https://github.com/netdragoon/helpWebForms/blob/master/WebApplication1/WebFormImagem.aspx.cs


    Fulvio C

    quarta-feira, 11 de maio de 2016 20:44
  • Bom dia Fulvio 

    Obrigado por responder.

    Coloquei sei código adequando com o meu e ficou da seguinte forma:

    <asp:GridView ID="gwDados" runat="server" AutoGenerateColumns="False" Width="400px"
                EmptyDataText="Não Existem Jogos Marcados..." CssClass="Grid" OnRowDataBound="gwDados_RowDataBound" OnRowCommand="gwDados_RowCommand">
                <Columns >
                    <asp:BoundField DataField="TIME" HeaderText="Time"  HeaderStyle-Width="200px"/>
                    <asp:BoundField DataField="DATAJOGO" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Data" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"/>
                    <asp:BoundField DataField="HORAJOGO" HeaderText="Horario" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"/>
                    <asp:BoundField DataField="TIMED" HeaderText="Time Desafiante" HeaderStyle-Width="200px" FooterStyle-HorizontalAlign="Center"  />


                    <asp:TemplateField HeaderText="Alterar" ShowHeader="False">
                      <ItemTemplate>
                           <asp:Button ID="Button1" runat="server" CausesValidation="false"
                               CommandArgument='<%#Bind("CODIGO") %>' CommandName="Alterar" Text="Alterar" />
                     </ItemTemplate>
                    </asp:TemplateField>
                </Columns>

            </asp:GridView>

    C#:

      protected void gwDados_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName.Equals("Alterar"))
                {
                    LblEscolhido.Text = e.CommandArgument.ToString();
                }
            }

    Erro:

    Erro de Servidor no Aplicativo '/'.

    Argumento de postback ou de retorno de chamada inválido. A validação do evento é habilitada com o uso de <pages enableEventValidation="true"/> na configuração ou <%@ Page EnableEventValidation="true" %> em uma página. Por motivos de segurança, esse recurso verifica se os argumentos para eventos de postback ou de retorno de chamada se originam no controle do servidor que originalmente os processou. Se os dados forem válidos e esperados, use o método ClientScriptManager.RegisterForEventValidation para registrar os dados de postback ou de retorno de chamada para validação.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.ArgumentException: Argumento de postback ou de retorno de chamada inválido. A validação do evento é habilitada com o uso de <pages enableEventValidation="true"/> na configuração ou <%@ Page EnableEventValidation="true" %> em uma página. Por motivos de segurança, esse recurso verifica se os argumentos para eventos de postback ou de retorno de chamada se originam no controle do servidor que originalmente os processou. Se os dados forem válidos e esperados, use o método ClientScriptManager.RegisterForEventValidation para registrar os dados de postback ou de retorno de chamada para validação.

    Erro de Origem: 
    Exceção sem tratamento foi gerada durante a execução da atual solicitação da Web. As informações relacionadas à origem e ao local da exceção podem ser identificadas usando-se o rastreamento de pilha de exceção abaixo.

    Rastreamento de Pilha: 
    [ArgumentException: Argumento de postback ou de retorno de chamada inválido. A validação do evento é habilitada com o uso de <pages enableEventValidation="true"/> na configuração ou <%@ Page EnableEventValidation="true" %> em uma página. Por motivos de segurança, esse recurso verifica se os argumentos para eventos de postback ou de retorno de chamada se originam no controle do servidor que originalmente os processou. Se os dados forem válidos e esperados, use o método ClientScriptManager.RegisterForEventValidation para registrar os dados de postback ou de retorno de chamada para validação.]
       System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +9728158
       System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +111
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +29
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3562
    


    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.1073.0

    quinta-feira, 12 de maio de 2016 09:07
  • Bom dia Fulvio 

    Obrigado por responder.

    Coloquei sei código adequando com o meu e ficou da seguinte forma:

    <asp:GridView ID="gwDados" runat="server" AutoGenerateColumns="False" Width="400px"
                EmptyDataText="Não Existem Jogos Marcados..." CssClass="Grid" OnRowDataBound="gwDados_RowDataBound" OnRowCommand="gwDados_RowCommand">
                <Columns >
                    <asp:BoundField DataField="TIME" HeaderText="Time"  HeaderStyle-Width="200px"/>
                    <asp:BoundField DataField="DATAJOGO" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Data" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"/>
                    <asp:BoundField DataField="HORAJOGO" HeaderText="Horario" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"/>
                    <asp:BoundField DataField="TIMED" HeaderText="Time Desafiante" HeaderStyle-Width="200px" FooterStyle-HorizontalAlign="Center"  />


                    <asp:TemplateField HeaderText="Alterar" ShowHeader="False">
                      <ItemTemplate>
                           <asp:Button ID="Button1" runat="server" CausesValidation="false"
                               CommandArgument='<%#Bind("CODIGO") %>' CommandName="Alterar" Text="Alterar" />
                     </ItemTemplate>
                    </asp:TemplateField>
                </Columns>

            </asp:GridView>

    C#:

      protected void gwDados_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName.Equals("Alterar"))
                {
                    LblEscolhido.Text = e.CommandArgument.ToString();
                }
            }

    Erro:

    Erro de Servidor no Aplicativo '/'.

    Argumento de postback ou de retorno de chamada inválido. A validação do evento é habilitada com o uso de <pages enableEventValidation="true"/> na configuração ou <%@ Page EnableEventValidation="true" %> em uma página. Por motivos de segurança, esse recurso verifica se os argumentos para eventos de postback ou de retorno de chamada se originam no controle do servidor que originalmente os processou. Se os dados forem válidos e esperados, use o método ClientScriptManager.RegisterForEventValidation para registrar os dados de postback ou de retorno de chamada para validação.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.ArgumentException: Argumento de postback ou de retorno de chamada inválido. A validação do evento é habilitada com o uso de <pages enableEventValidation="true"/> na configuração ou <%@ Page EnableEventValidation="true" %> em uma página. Por motivos de segurança, esse recurso verifica se os argumentos para eventos de postback ou de retorno de chamada se originam no controle do servidor que originalmente os processou. Se os dados forem válidos e esperados, use o método ClientScriptManager.RegisterForEventValidation para registrar os dados de postback ou de retorno de chamada para validação.

    Erro de Origem: 
    Exceção sem tratamento foi gerada durante a execução da atual solicitação da Web. As informações relacionadas à origem e ao local da exceção podem ser identificadas usando-se o rastreamento de pilha de exceção abaixo.

    Rastreamento de Pilha: 
    [ArgumentException: Argumento de postback ou de retorno de chamada inválido. A validação do evento é habilitada com o uso de <pages enableEventValidation="true"/> na configuração ou <%@ Page EnableEventValidation="true" %> em uma página. Por motivos de segurança, esse recurso verifica se os argumentos para eventos de postback ou de retorno de chamada se originam no controle do servidor que originalmente os processou. Se os dados forem válidos e esperados, use o método ClientScriptManager.RegisterForEventValidation para registrar os dados de postback ou de retorno de chamada para validação.]
       System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +9728158
       System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +111
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +29
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3562
    


    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.1073.0

    Você está utilizando UpdatePanel?

    Fulvio C

    quinta-feira, 12 de maio de 2016 13:35
  • Bom dia Fulvio

    Sim estou conforme o código mais completo abaixo:

                                             

    <asp:Panel runat="server" ID="pnlShowData" Visible="true">
            <asp:GridView ID="gwDados" runat="server" AutoGenerateColumns="False" Width="400px"
                EmptyDataText="Não Existem Jogos Marcados..." CssClass="Grid" OnRowDataBound="gwDados_RowDataBound" OnRowCommand="gwDados_RowCommand">
                <Columns >
                    <asp:BoundField DataField="TIME" HeaderText="Time"  HeaderStyle-Width="200px"/>
                    <asp:BoundField DataField="DATAJOGO" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Data" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"/>
                    <asp:BoundField DataField="HORAJOGO" HeaderText="Horario" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"/>
                    <asp:BoundField DataField="TIMED" HeaderText="Time Desafiante" HeaderStyle-Width="200px" FooterStyle-HorizontalAlign="Center"  />


                    <asp:TemplateField HeaderText="Alterar" ShowHeader="False">
                      <ItemTemplate>
                           <asp:Button ID="Button1" runat="server" CausesValidation="false"
                               CommandArgument='<%#Bind("CODIGO") %>' CommandName="Alterar" Text="Alterar" />
                     </ItemTemplate>
                    </asp:TemplateField>
                </Columns>

            </asp:GridView>
        </asp:Panel>

    Pode me ajudar por favor ?

    sexta-feira, 13 de maio de 2016 09:47
  • Coloque exclusivamente nessa pagina o EnableEventValidation="false" igual exemplo linha abaixo!

    <%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeBehind="WebFormImagem.aspx.cs" Inherits="WebApplication1.WebFormImagem" %>

    Ou seja, inclua o EnableEventValidation="false" nessa linha, que é a primeira linha do seu aspx!

    Tem outras formas de resolver isso, mas, essa vai teoricamente eliminar esse problema (que não verdade não é problema é não verificação do evento nessa pagina)


    Fulvio C

    sexta-feira, 13 de maio de 2016 13:21