我有一个ListView控件如下(在这里发布我从ItemTemplate中删除了值):
<asp:ListView ID="ListView1" runat="server" DataSourceID="MyDataSource">
<LayoutTemplate>
<div id="requests" runat="server">
<asp:Panel runat="server" id="itemPlaceholder"></asp:Panel>
</div>
<asp:DataPager runat="server" ID="DataPager" PageSize="3">
<Fields>
<asp:NumericPagerField ButtonCount="10" PreviousPageText="<--" NextPageText="-->" />
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<div ID="itemPlaceholder" class="request" runat="server">
<asp:LinkButton ID="button" runat="server" Text='...' CommandName="..."
CommandArgument='...' OnClick="..."
style="...">
</asp:LinkButton> -
</div>
</ItemTemplate>
</asp:ListView>
此ListView作为用户控件(.ascx)存在,我已将其嵌入到ASPX网页中。
正如我所料,当网页加载时,对于9个项目的列表,我得到3页3个项目。
当我点击进入下一页时,页面会正确加载下一组项目......但仅限于短暂的一秒钟。然后发生一件奇怪的事情。该页面在页面中嵌入了自己的副本6次,每个页面位于页面内表单上的一个字段下面。
如果我然后尝试转到下一页或上一页,则会出现ASP.NET服务器错误:
此页面的状态信息无效,可能已损坏。
在堆栈跟踪中,它显示以下错误:
FormatException:输入不是有效的Base-64字符串,因为它包含非基本字符,两个以上的填充字符或填充字符中的非空白字符。
ViewStateException:无效的viewstate。
我能够在我的浏览器,IE8和Chrome上复制它。
答案 0 :(得分:0)
您使用listview事件OnPagePropertiesChanging
像这样 <asp:ListView ID="lvCustomers" runat="server" GroupPlaceholderID="groupPlaceHolder1"
ItemPlaceholderID="itemPlaceHolder1" OnPagePropertiesChanging="OnPagePropertiesChanging">
在aspx.cs中
protected void OnPagePropertiesChanging(object sender,PagePropertiesChangingEventArgs e)
{
(lvCustomers.FindControl("DataPager1") as DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
this.BindListView();
}
BindListView()是绑定列表视图的方法
我希望这是有帮助的