我使用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上。
任何人都可以帮助我吗?非常感谢你!
答案 0 :(得分:1)
简单,只需从数据库中的“QUERY-STRING”中获取“ID”,现在将其设置为寻呼机控制属性[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"]
。
答案 1 :(得分:0)
您没有显示ViewState[ViewState[VIEWSTATE_DATASET]
的设置方式。我猜这会在回发时重置为null
并且您正在吞下可能在此行上尝试转换空值的Exception
:
listView.DataSource = ((DataSet)ViewState[VIEWSTATE_DATASET]).Tables[0];