Error: Invalid callback or callback argument

I get the following error when I click a button with gridview

Server Error in '/' Application. 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. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.ArgumentException: 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. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [ArgumentException: 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.] System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +144 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) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724 Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.17929 

This happens when I click a button inside a gridview, and it is strange that I have another gridview, also with a custom button in a column that launches different code but gives no errors. Below is the page code and code.

 namespace CCCC { public partial class drivermangement : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) { if (Roles.IsUserInRole("Administrator")) { LoggedInUser.Value = Convert.ToString(Request.QueryString["driver"]); } else { LoggedInUser.Value = Membership.GetUser().UserName.ToString(); } DayOfTheWeekHiddenField.Value = Convert.ToString(Request.QueryString["dow"]); } else { Response.Redirect("default.aspx"); } if (NewCustomersGrid.Rows.Count == 0) { NewCustomersLabel.Visible = false; } else { NewCustomersLabel.Visible = true; } if (NeedCompostGrid.Rows.Count == 0) { NeedCompostLabel.Visible = false; } else { NeedCompostLabel.Visible = true; } if (CanceledGrid.Rows.Count == 0) { CanceledLabel.Visible = false; } else { CanceledLabel.Visible = true; } if (VacationGrid.Rows.Count == 0) { VacationLabel.Visible = false; } else { VacationLabel.Visible = true; } if (NewCustomersGrid0.Rows.Count == 0) { NewCustomersLabel0.Visible = false; } else { NewCustomersLabel0.Visible = true; } if (NeedCompostGrid0.Rows.Count == 0) { NeedCompostLabel0.Visible = false; } else { NeedCompostLabel0.Visible = true; } if (CanceledGrid0.Rows.Count == 0) { CanceledLabel0.Visible = false; } else { CanceledLabel0.Visible = true; } } protected void NewCustomerDoneButton_Click(object sender, EventArgs e) { int CustomerID = Convert.ToInt32(((Button)sender).CommandArgument); string CustomerBinNeedAcknowledged = "Yes"; string strConnString = "Data Source"; using (SqlConnection con = new SqlConnection(strConnString)) { using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = con; cmd.CommandType = CommandType.Text; cmd.CommandText = "UPDATE Customers SET CustomerBinNeedAcknowledged=@CustomerBinNeedAcknowledged WHERE CustomerID=@CustomerID "; cmd.Parameters.AddWithValue("@CustomerBinNeedAcknowledged", CustomerBinNeedAcknowledged); cmd.Parameters.AddWithValue("@CustomerId", CustomerID); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } } } 

and actual page:

 <%@ Master Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" Inherits="CCCCCC.drivermangement" CodeBehind="drivermangement.master.cs" %> <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <asp:HiddenField ID="LoggedInUser" runat="server" /> <asp:HiddenField ID="DayOfTheWeekHiddenField" runat="server" /> <ajaxToolkit:TabContainer ID="RoutingTabs" runat="server" ActiveTabIndex="0" Width="900px"> <ajaxToolkit:TabPanel runat="server" HeaderText="Pre-Route" ID="PreRouteTab"> <ContentTemplate> <br /> <asp:Label ID="NewCustomersLabel" runat="server" style="font-weight: 700; font-size: large; color: #009933" Text="New Customers"></asp:Label> <asp:GridView ID="NewCustomersGrid" runat="server" AllowPaging="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" DataKeyNames="CustomerId" DataSourceID="NewCustomers" ForeColor="Black" GridLines="Vertical"> <AlternatingRowStyle BackColor="#99FF99" ></AlternatingRowStyle> <Columns> <asp:BoundField DataField="CustomerFullName" HeaderText="Name" SortExpression="CustomerFullName" /> <asp:BoundField DataField="CustomerFullAddress" HeaderText="Address" SortExpression="CustomerFullAddress" /> <asp:BoundField DataField="CustomerNeedsBin" HeaderText="Needs Bin?" SortExpression="CustomerNeedsBin" /> <asp:TemplateField ShowHeader="False"><ItemTemplate> <asp:Button ID="NewCustomerDoneButton" runat="server" CommandName="" Text="Done" CommandArgument='<%# Eval("CustomerID") %>' OnClick="NewCustomerDoneButton_Click" CausesValidation="False" /> </ItemTemplate> </asp:TemplateField> </Columns> <asp:SqlDataSource ID="NewCustomers" runat="server" ConnectionString="<%$ ConnectionStrings:tcc_customersConnectionString %>" SelectCommand="SELECT [CustomerId], [CustomerStatus], [CustomerFullName], [CompanyName], [CustomerFullAddress], [CustomerPickUpDay], [CustomerPickUpDay2], [CustomerDriver], [CustomerNeedsBin], [CustomerBinNeedAcknowledged] FROM [Customers] WHERE (([CustomerBinNeedAcknowledged] = @CustomerBinNeedAcknowledged) AND ([CustomerNeedsBin] = @CustomerNeedsBin) AND ([CustomerDriver] = @CustomerDriver) AND ([CustomerStatus] = @CustomerStatus) AND ([CustomerPickUpDay] = @CustomerPickUpDay OR [CustomerPickUpDay2] = @CustomerPickUpDay2))"><SelectParameters> <asp:Parameter DefaultValue="No" Name="CustomerBinNeedAcknowledged" Type="String" /> <asp:Parameter DefaultValue="Yes" Name="CustomerNeedsBin" Type="String" /> <asp:ControlParameter ControlID="LoggedInUser" Name="CustomerDriver" PropertyName="Value" Type="String"></asp:ControlParameter> <asp:Parameter DefaultValue="New" Name="CustomerStatus" Type="String" /> <asp:ControlParameter ControlID="DayOfTheWeekHiddenField" Name="CustomerPickUpDay" PropertyName="Value" Type="String" ></asp:ControlParameter> <asp:ControlParameter ControlID="DayOfTheWeekHiddenField" Name="CustomerPickUpDay2" PropertyName="Value" Type="String" /> </SelectParameters> </asp:SqlDataSource> </ContentTemplate> </ajaxToolkit:TabPanel> <ajaxToolkit:TabPanel runat="server" HeaderText="Post-Route" ID="PostRouteTab"><ContentTemplate> 

Now I'm wondering, is this because the GridView is inside the Ajax Tab Container ? Because my other table works fine, not ...

Note: I had to cut some code from the page due to character restrictions

+4
source share
4 answers

1) Invalid callback or callback argument in GridView. The problem may be this: you bind the data in the Page_Load event with an object data source or manually bind with a function call. This will allow you to bind GridView data to each event of any control.

When you run any GridView command with OnRowCommand, before starting RowCommand, your GridView will regroup and the entire control inside it will be assigned a new identifier. Therefore, RowCommand could not get the element that fired the event.

Solution for an invalid callback or callback argument in a GridView: you can link your data in this condition if

 if (!IsPostBack) { //Your code for Bind data } 

This code will definitely give you a solution if this does not work, then check to see if any other control fails.

+15
source

You update the Grid or any such control through javascript or Ajax.

If so, you may run into this. A possible solution would be to set EnableEventValidation to false.

+1
source

Few things to try

  • In your Page Load event, add a check for !Page.IsPostBack and move the nonequivalent code block there.
  • An experiment using LinkButton instead of a regular button.
0
source

This may be due to any third-party controls that you use.

I also had this error. In my case, I have relay control inside updatepanel and inside relay control I used telerik datepicker control. It worked fine in IE, but not in Mozilla and Chrome. I looked at the form data in both cases, sending a request from chrome and IE and found that the trigger control values ​​are slightly different. I used telerik RadAjaxmanager instead of updatepanel, the error disappeared.

0
source

Source: https://habr.com/ru/post/1434433/


All Articles