我有以下Listview定义
<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
无效的回发或回调参数。事件验证已启用 在配置中使用或&lt;%@ Page EnableEventValidation =“true”%&gt;在一个页面中。为了安全 目的,此功能验证回发或回调的参数 事件源自最初呈现的服务器控件 他们。如果数据有效且预期,请使用 ClientScriptManager.RegisterForEventValidation方法 注册回发或回调数据以进行验证。
我只是不明白为什么在我为事件验证注册这两个项目之后我继续收到错误。我甚至没有进入RaiseCallbackEvent!
我是这些控件的全新手,也不是.net专家。任何帮助或建议将不胜感激!
答案 0 :(得分:1)
我找到了答案。我正在调用我的函数来加载报表数据并将它绑定到OnLoad和Render中的ListView。当我从OnLoad中删除额外的呼叫时,我不再收到该消息。但是,分页仍然无效,但问题已转移到代码中的另一个位置:)
答案 1 :(得分: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>
答案 2 :(得分:0)
我认为您无需更改EventValidation
或使用RegisterForEventValidation
将此代码放在Page_Load
事件
if (!IsPostBack)
{
BindData();
}
不要忘记修改PagePropertiesChanged
的{{1}}事件:
ListViews