Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » Ungültiges Postback- oder Callbackargument

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.01.2007, 22:33 Uhr
Eroli



Hallo zusammen,

ich fummele nun etwas mit dem Paging rum und es scheint auch zu funzen. Ich habe dazu ein Code-Beispiel von The Code Project genommen. Hier erstmal mein Quellcode:


ASP.NET 2.0 Seite

C++:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" EnableEventValidation="true"%>
<%@ import Namespace="System" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server">
    const int RECORDS_PER_PAGE = 5;
    int totalRecords;
    
    void Page_Load()
    {
        // get the number of records found in the database
        totalRecords = GetProductsCount();
        // calculate and save the number of pages to the Pages hidden field
        Pages.Value = Math.Ceiling((double)totalRecords/RECORDS_PER_PAGE).ToString();
            
        if (!Page.IsPostBack)
        {            
            // Bind records to repeater
            BindData();
        }
    }

    void BindData()
    {
        int pageNumber = int.Parse(PageNumber.Value);
        int totalPages = int.Parse(Pages.Value);
        
        SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand command = new SqlCommand("GetAuctionsByPage", connection);
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.AddWithValue("@PageNumber", pageNumber);
        command.Parameters.AddWithValue("@PageSize", RECORDS_PER_PAGE);
    
        connection.Open();
        DataSet auctions = new DataSet();
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = command;
        adapter.Fill(auctions, "Auctions");
        connection.Close();
        
        // Bind Data to the repeater
        ProductsRepeater.DataSource = auctions;
        ProductsRepeater.DataBind();
        
        // Display the page links
        PagesDisplay.Text = "";
        for (int i=1; i<=totalPages; i++)
        {
            if (pageNumber != i)
                PagesDisplay.Text += "<a href=\"javascript:ChangePage("+i+")\">"+i+"</a>&nbsp;&nbsp;";
            else
                PagesDisplay.Text += "[" + i + "]&nbsp;&nbsp;";
        }
        
        // enable/disable the links to navigate through the pages
        FirstPage.Enabled = (pageNumber != 1);
        PrevPage.Enabled = (pageNumber != 1);
        NextPage.Enabled = (pageNumber != totalPages);
        LastPage.Enabled = (pageNumber != totalPages);
        
        Info.Text = totalRecords + " records are found and divided into " + Pages.Value + " pages<br><br>";
    }
    
    // return the number of total records in database
    int GetProductsCount()
    {
        SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand command = new SqlCommand("SELECT Count(*) FROM [AuctionsTable]", connection);
        
        connection.Open();
        int count = (int)command.ExecuteScalar();
        connection.Close();
        
        return count;
    }
    
    // execute when user clicks on the next/prev/first/last button
    void Page_Changed(object sender, CommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "FirstPage":
                PageNumber.Value = "1";
                break;
            case "PrevPage":
                PageNumber.Value = (int.Parse(PageNumber.Value) -1).ToString();
                break;
            case "NextPage":
                PageNumber.Value = (int.Parse(PageNumber.Value) +1).ToString();
                break;
            case "LastPage":
                PageNumber.Value = Pages.Value;
                break;
        }
            
        // rebind data
        BindData();
    }
    
    // execute when user clicks on the page link
    void Page_Click(object sender, System.EventArgs e)
    {
        // rebind data
        BindData();
    }
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
    function ChangePage(id)
    {
        // save the page clicked
        document.all.PageNumber.value = id;
        // call the __doPostBack function to post back the form and execute the PageClick event
        __doPostBack('PageClick','');
    }
</script>
</head>
<body bgcolor="black">
    <form id="Topics" method="post" runat="server">
    <div style="background-color: white; width: 500px">
        <!-- Hidden fields store the current page number and total pages -->
        <input type="hidden" runat="server" id="PageNumber" value="1">
        <input type="hidden" runat="server" id="Pages" value="0">
        <!-- Hidden button to handle the click event when user clicks on a pge link-->
        <asp:button ID="PageClick" OnClick="Page_Click" runat="server" Visible="false"></asp:button>
        <asp:label ID="Info" runat="server"></asp:label>
        <asp:linkbutton ID="FirstPage" runat="server" CommandName="FirstPage" OnCommand="Page_Changed">First</asp:linkbutton>&nbsp;
        <asp:linkbutton ID="PrevPage" runat="server" CommandName="PrevPage" OnCommand="Page_Changed">Prev</asp:linkbutton>&nbsp;
        <asp:label ID="PagesDisplay" runat="server"></asp:label>
        <asp:linkbutton ID="NextPage" runat="server" CommandName="NextPage" OnCommand="Page_Changed">Next</asp:linkbutton>&nbsp;
        <asp:linkbutton ID="LastPage" runat="server" CommandName="LastPage" OnCommand="Page_Changed">Last</asp:linkbutton>
        <br><br>
        <table width="300" style="border: 1 solid gray" align="center">
            <tr>
                <td>ID</td>
                <td>User</td>
                <td>Kategorie</td>
                <td>Titel</td>
                <td>Beschreibung</td>
            </tr>
            <asp:repeater ID="ProductsRepeater" runat="server">
                <itemtemplate>
                <tr>
                    <td><%# DataBinder.Eval(Container.DataItem, "Id") %></td>
                    <td><%# DataBinder.Eval(Container.DataItem, "User") %></td>
                    <td><%# DataBinder.Eval(Container.DataItem, "Categorie") %></td>
                    <td><%# DataBinder.Eval(Container.DataItem, "Title") %></td>
                    <td><%# DataBinder.Eval(Container.DataItem, "Description") %></td>
                </tr>
                </itemtemplate>
            </asp:repeater>
        </table>
    </div>
    </form>
</body>
</html>

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.01.2007, 22:39 Uhr
Eroli



Und hier nun meine gespeicherte Prozedur auf meinem MS SQL Server:

C++:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetAuctionsByPage]
@PageNumber int,
@PageSize int
AS

SET IDENTITY_INSERT dbo.TempAuctionsTable ON
    -- fill the temp table with all the products for the
    -- specified products retrieved from the Products table
    INSERT INTO [TempAuctionsTable]
    (
        [Id],
        [User],
        [Categorie],
        [Title],
        [Description],
        [Price],
        [Commandments],
        [Appointment],
        [Location],
        [CreationDate],
        [Material],
        [Payment],
        [Qualifications],
        [PublicLiability],
        [NumberOfEmployees],
        [NumberOfReferences],
        [EvaluationCriterias],
        [Miscellaneous],
        [PictureCount]
    )
    SELECT
        [Id],
        [User],
        [Categorie],
        [Title],
        [Description],
        [Price],
        [Commandments],
        [Appointment],
        [Location],
        [CreationDate],
        [Material],
        [Payment],
        [Qualifications],
        [PublicLiability],
        [NumberOfEmployees],
        [NumberOfReferences],
        [EvaluationCriterias],
        [Miscellaneous],
        [PictureCount]
    FROM [AuctionsTable]

    -- declare two variables to calculate the
    -- range of records to extract for the specified page
    DECLARE @FromID int
    DECLARE @ToID int

    -- calculate the first and last ID of the range of topics we need
    SET @FromID = ((@PageNumber - 1) * @PageSize) + 1
    SET @ToID = @PageNumber * @PageSize

    -- select the page of records
    SELECT [Id], [User], [Categorie], [Title], [Description] FROM [TempAuctionsTable]
                   WHERE ID >= @FromID AND ID <= @ToID

DELETE FROM [Eroli].[dbo].[TempAuctionsTable]




Und das ist meine Exception:

Zitat:

Ungültiges Postback- oder Callbackargument. Die Ereignisvalidierung wird mithilfe von <pages enableEventValidation="true"/> in der Konfiguration oder mithilfe von <%@ Page EnableEventValidation="true" %> auf einer Seite aktiviert. Aus Sicherheitsgründen überprüft dieses Feature, dass Argumente für Postback- oder Callbackereignisse von dem Serversteuerelement ausgehen, von dem sie ursprünglich gerendert wurden. Wenn die Daten gültig sind und erwartet wurden, verwenden Sie die ClientScriptManager.RegisterForEventValidation-Methode, um die Postback- oder Callbackdaten für die Validierung zu registrieren.
Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

Ausnahmedetails: System.ArgumentException: Ungültiges Postback- oder Callbackargument. Die Ereignisvalidierung wird mithilfe von <pages enableEventValidation="true"/> in der Konfiguration oder mithilfe von <%@ Page EnableEventValidation="true" %> auf einer Seite aktiviert. Aus Sicherheitsgründen überprüft dieses Feature, dass Argumente für Postback- oder Callbackereignisse von dem Serversteuerelement ausgehen, von dem sie ursprünglich gerendert wurden. Wenn die Daten gültig sind und erwartet wurden, verwenden Sie die ClientScriptManager.RegisterForEventValidation-Methode, um die Postback- oder Callbackdaten für die Validierung zu registrieren.

Quellfehler:

Beim Ausführen der aktuellen Webanforderung wurde einen unbehandelte Ausnahme generiert. Informationen über den Ursprung und die Position der Ausnahme können mit der Ausnahmestapelüberwachung angezeigt werden.

Stapelüberwachung:

[ArgumentException: Ungültiges Postback- oder Callbackargument. Die Ereignisvalidierung wird mithilfe von <pages enableEventValidation="true"/> in der Konfiguration oder mithilfe von <%@ Page EnableEventValidation="true" %> auf einer Seite aktiviert. Aus Sicherheitsgründen überprüft dieses Feature, dass Argumente für Postback- oder Callbackereignisse von dem Serversteuerelement ausgehen, von dem sie ursprünglich gerendert wurden. Wenn die Daten gültig sind und erwartet wurden, verwenden Sie die ClientScriptManager.RegisterForEventValidation-Methode, um die Postback- oder Callbackdaten für die Validierung zu registrieren.]
System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +366
System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +83
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +51
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +244
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3840




Ich weiß, dass ist jetzt etwas viel am Anfang, aber ich denke so könnt ihr mir am besten/schnellsten helfen.
Ich tippe mal es liegt an dem Java-Dingen im Quelltext meiner ASP.NET seite....


Viele Grüße,
Eroli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.01.2007, 13:56 Uhr
Eroli



Hallo,

habe testweise mal das

EnableEventValidation=false gesetzt und es scheint alles zu klappen.

Könntet ihr mir viel´leicht sagen, warum!?


Viele Grüße,
Eroli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: