1

我使用 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 上。

任何人都可以帮助我吗?太感谢了!

4

2 回答 2

1

它很简单,只需从数据库中获取“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"]

于 2012-11-12T05:41:09.313 回答
0

你没有展示如何ViewState[ViewState[VIEWSTATE_DATASET]设置。我猜这将null在回发时重置,并且您正在吞咽Exception可能在此行上引发的尝试强制转换空值的内容:

 listView.DataSource = ((DataSet)ViewState[VIEWSTATE_DATASET]).Tables[0];
于 2011-12-14T03:12:17.700 回答