【发布时间】:2009-05-31 02:26:59
【问题描述】:
我正在为我的大学项目制作一个网站。 该项目是从 Web 服务获取一切的网站。 谁能告诉我发生了什么,以及我如何解决它?
在我的一个页面上,我有 ListView 控件来显示产品项目,而 Pager 在同一页面上。 在第一次页面呈现良好并显示所有内容。当我点击 Pager 上的 nextPage 时,它会重新加载页面但不显示第二页,而是显示相同的数据,如果我再推一次,那么我就开始了:
Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
我的产品页面很简单:
<asp:ListView ID="lv_ProductList" runat="server" DataKeyNames="product_id">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
<br />
<br />
<asp:DataPager ID="pageTopics" runat="server" PageSize="8" PagedControlID="lv_ProductList" >
<Fields>
<asp:NextPreviousPagerField ShowFirstPageButton="false" ShowPreviousPageButton="true" ShowNextPageButton="false" ButtonCssClass="span" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ShowFirstPageButton="false" ShowPreviousPageButton="false" ShowNextPageButton="true" ShowLastPageButton="false" />
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<div class="item">
<img src="images/pic_1.jpg" width="91" height="105" alt="iPod" class="left" />
<h3><a href="http://www.justwebtemplates.com"><%# Eval("product_name") %></a></h3>
<p><%# Eval("product_desc").ToString().Substring(0,90) + "..." %> </p>
<div><a href="http://www.freewebsitetemplates.com" class="details">details</a> <a href="http://www.freewebsitetemplates.com" class="addtocart">add to cart</a></div>
<div class="divider"></div>
</div>
</ItemTemplate>
<EmptyDataTemplate>No products found</EmptyDataTemplate>
<EmptyItemTemplate>No products found</EmptyItemTemplate>
</asp:ListView>
并且在我后面的代码中:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
getProductsList();
}
}
public void getProductsList()
{
Store.Service myProducts = new Store.Service();
var products = myProducts.getProductList();
lv_ProductList.DataSource = products;
lv_ProductList.DataBind();
}
在网络服务上:
[WebMethod]
public List<ws_product> getProductList()
{
using (DataClassesDataContext myProducts = new DataClassesDataContext())
{
var productList = from p in myProducts.ws_products
select p;
return productList.ToList();
}
}
有人能告诉我发生了什么吗? 此外,如果我在 ListView 之外使用 Pager,则不会出现错误,但是如果我单击 nextpage 链接,它会显示相同的数据集。
我该如何解决? 提前谢谢你。
【问题讨论】:
标签: c# .net asp.net linq web-services