0

次のリストビューを定義しています

<asp:ListView 
        ID="reportData" 
        EnableSortingAndPagingCallback="True"
        AllowPaging="True"
        AllowSorting="True"
        PageSize="20" 
        OnLayoutCreated="LoadReport"
        onsorting="reportData_Cause_Sorting" 
        OnPagePropertiesChanging="reportData_PagePropertiesChanging"
        runat="server">

DataPager も定義しています

<asp:DataPager ID="reportPager" PagedControlID="reportData" PageSize="20" runat="server" >
    <Fields>
        <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />
    </Fields>
</asp:DataPager>

次に、enableEventValidation を true に設定しているため、アイテムも登録されています。

   Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        Page.ClientScript.RegisterForEventValidation(reportData.UniqueID)
        Page.ClientScript.RegisterForEventValidation(reportPager.UniqueID)
        MyBase.Render(writer)
    End Sub

最初のページの読み込みは問題なく実行されますが、ページ ナビゲーションをクリックすると、コード ビハインドに送られ、エラーが発生する前に page_load を通過します。

ポストバックまたはコールバック引数が無効です。イベントの検証は、設定で使用するか、ページで <%@ Page EnableEventValidation="true" %> を使用して有効にします。セキュリティ上の目的で、この機能は、ポストバック イベントまたはコールバック イベントへの引数が、それらを最初にレンダリングしたサーバー コントロールから発信されていることを確認します。データが有効で期待される場合は、ClientScriptManager.RegisterForEventValidation メソッドを使用して、検証のためにポストバックまたはコールバック データを登録します。

イベント検証用に両方のアイテムを登録した後もエラーが発生し続ける理由がわかりません。RaiseCallbackEvent に入ることさえありません。

私はこれらのコントロールの初心者であり、.net の専門家でもありません。どんな助けやアドバイスも大歓迎です!

4

3 に答える 3

1

私は答えを見つけました。関数を呼び出して、レポートデータをロードし、OnLoadとRenderの両方でListViewにバインドしていました。OnLoadから余分な呼び出しを削除すると、メッセージを受信しなくなりました。ただし、ページングは​​まだ機能していませんが、問題はコード内の別の場所に移動しています:)

于 2012-07-18T13:38:30.447 に答える
0

この簡単な例を試してください。
urlはページングの値を渡します

protected void DepartmentsListView_SelectedIndexChanged(object sender, ListViewCommandEventArgs e)
{
    MessageLabel.Text = "The key value is " +
      CountriesListView.SelectedValue.ToString() + ".";
}



<asp:ListView ID="CountriesListView" DataSourceID="ContactsDataSource" runat="server"
    DataKeyNames="FirstName" OnItemCommand="DepartmentsListView_SelectedIndexChanged">
    <LayoutTemplate>
        <table cellpadding="4" width="500" runat="server" id="tblCountries">
            <tr id="Tr1" runat="server">
                <th id="Th0" runat="server">
                    ID
                </th>
                <th id="Th1" runat="server">
                    Code
                </th>
                <th id="Th2" runat="server">
                    Name
                </th>
            </tr>
            <tr runat="server" id="itemPlaceholder" />
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <asp:LinkButton runat="server" ID="SelectButton" Text="Select" CommandName="Select" />
            </td>
            <td>
                <asp:Label ID="CountryCodeLabel" runat="server" Text='<%# Eval("EmployeeID")%>' />
            </td>
            <td>
                <asp:Label ID="NameLabel" runat="server" Text='<%# Eval("FirstName")%>' />
            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>


 <asp:DataPager runat="server" ID="DataPager2" PageSize="3" PagedControlID="CountriesListView"
    QueryStringField="pageNumber">
    <Fields>
        <asp:NumericPagerField />
    </Fields>
</asp:DataPager>




    <asp:SqlDataSource ID="ContactsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:conecec %>"
    SelectCommand="SELECT [EmployeeID], [FirstName], [LastName] FROM Employees">
</asp:SqlDataSource>
于 2012-07-17T20:46:25.997 に答える