none
Invalid postback or callback argument - Gridview com ImageButton RRS feed

  • Pergunta

  • Bom dia pessoal!

    Tenho um gridview com um botão (que já alternei entre LinkButton e ImageButton), todos sem sucesso. A única diferença é que o LinkButton não dispara o erro citado, mas também não chama o evento do clique. Gostaria de uma solução na qual não comprometa a segurança da aplicação, setando o enableEventValidation para false. Já pesquisei aqui no fórum mas a maioria das questões foram resolvidas com essa solução.

    Observação: o método que preenche meu grid está FORA do (!IsPostBack), e já testei com ele dentro, também sem sucesso.

    Segue abaixo erro exibido

    Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

    Obrigada!

    quarta-feira, 4 de setembro de 2013 13:28

Respostas

  • Aretha, fiz alguns testes e funcionou normalmente a ação do botão na minha grid. Segue Código:

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" EnableEventValidation="false" %>
    
    <asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    
    
        <div>
    
            <asp:GridView runat="server" AutoGenerateColumns="false" ID="grdTeste">
                <Columns>
                    <asp:BoundField HeaderText="Teste" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="btnTeste" runat="server" Text="Post" OnClick="btnTeste_Click" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
    
    
    
    
        </div>
    
    </asp:Content>

    public partial class _Default : Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                List<string> teste = new List<string>();
    
                for (int i = 0; i < 10; i++)
                {
                    teste.Add("Teste " + i.ToString());
                }
    
                grdTeste.DataSource = teste;
                grdTeste.DataBind();
            }
    
            protected void btnTeste_Click(object sender, EventArgs e)
            {
    
            }
        }

    Espero ter ajudado. 

    Caso ajudou marque por favor. 

    Good Luck

    • Marcado como Resposta Aretha Lemos quarta-feira, 4 de setembro de 2013 16:19
    quarta-feira, 4 de setembro de 2013 13:47

Todas as Respostas

  • Aretha, fiz alguns testes e funcionou normalmente a ação do botão na minha grid. Segue Código:

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" EnableEventValidation="false" %>
    
    <asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    
    
        <div>
    
            <asp:GridView runat="server" AutoGenerateColumns="false" ID="grdTeste">
                <Columns>
                    <asp:BoundField HeaderText="Teste" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="btnTeste" runat="server" Text="Post" OnClick="btnTeste_Click" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
    
    
    
    
        </div>
    
    </asp:Content>

    public partial class _Default : Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                List<string> teste = new List<string>();
    
                for (int i = 0; i < 10; i++)
                {
                    teste.Add("Teste " + i.ToString());
                }
    
                grdTeste.DataSource = teste;
                grdTeste.DataBind();
            }
    
            protected void btnTeste_Click(object sender, EventArgs e)
            {
    
            }
        }

    Espero ter ajudado. 

    Caso ajudou marque por favor. 

    Good Luck

    • Marcado como Resposta Aretha Lemos quarta-feira, 4 de setembro de 2013 16:19
    quarta-feira, 4 de setembro de 2013 13:47
  • Fernando, bom dia! 

    Conseguimos resolver aqui, usando o LinkButton. ESTRANHAMENTE, tirando a propriedade ImageUrl do botão, passou a funcionar e cair no meu evento do clique. ASP.Net e suas aventuras.

    Muito obrigada! 
    quarta-feira, 4 de setembro de 2013 16:19