我使用DataPager对ListView数据进行分页。当ListView绑定时,DataPager在下面显示许多页面,看起来一切正常,但是当我点击另一个页面时,在回发之后,ListView是空的,有EmptyDataTemplate,当然也没有页面。
我在谷歌上搜索并尝试了下面的一个和两个解决方案,但它们都没有帮助
protected void DatapPager_OnPreRender(object sender, EventArgs e)
{
try
{
listView.DataSource = ((DataSet)ViewState[VIEWSTATE_DATASET]).Tables[0];
listView.DataBind();
}
catch (System.Exception ex)
{
}
base.OnPreRender(e);
}
protected void listView_OnPagePropertiesChanged(object sender, EventArgs e)
{
try
{
listView.DataSource = ((DataSet)ViewState[VIEWSTATE_DATASET]).Tables[0];
listView.DataBind();
}
catch (System.Exception ex)
{
}
}在我的例子中,ListView的数据绑定在单击事件中,而不是绑定在PageLoad上。
有人能帮我吗?非常感谢!
发布于 2012-11-12 13:41:09
它很简单,只需从数据库中获取"QUERY-STRING“中的"ID”,现在将其设置为Pager Control属性为[QueryStringField="ID"],如下所示:
<asp:DataPager ID="DataPagerProducts" runat="server" QueryStringField="ID" PageSize="3">
<Fields>
<asp:NextPreviousPagerField ShowFirstPageButton="True" ShowNextPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ShowLastPageButton="True" ShowPreviousPageButton="False" />
</Fields>
</asp:DataPager>注意:如果不工作,则同时设置[PagedControlID="ListView_Name"]。
发布于 2011-12-14 11:12:18
您并没有展示ViewState[ViewState[VIEWSTATE_DATASET]是如何设置的。我猜这是在回发时重置为null,并且您正在吞噬可能在试图强制转换空值的该行上引发的Exception:
listView.DataSource = ((DataSet)ViewState[VIEWSTATE_DATASET]).Tables[0];https://stackoverflow.com/questions/8498148
复制相似问题