如何让ASP.NET DataPager控件在UpdatePanel中工作?

时间:2009-01-08 15:39:56

标签: asp.net updatepanel

我的搜索页面顶部有参数,搜索按钮的结果位于底部。整个事情都包含在母版页内的更新面板中。单击搜索按钮后,它将显示第一页。但是,如果单击DataPager上的下一个按钮,则不会显示第二页。它显示第二页没有结果。任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:3)

我认为尼克有正确的想法。听起来您正在执行搜索并在OnClick方法中为搜索按钮填充ListView。您需要执行搜索(或者最好是第一次缓存数据)并将其绑定到使用DataPager请求的每个新页面的ListView。

通过为ListView的OnPagePropertiesChanged事件创建方法,您可以相当轻松地完成此操作。执行搜索(或从缓存中拉出)并在该OnPagePropertiesChanged事件中绑定ListView,您的数据应该填充。您的C#代码可能如下所示:

protected void SearchButton_OnClick(object sender, EventArgs e)
{
    PerformSearch();
}

protected void PerformSearch()
{
    // ...Get your data.... //

    ListView1.DataSource = data;
    ListView1.DataBind();
}

protected void ListView1_OnPagePropertiesChanged(object sender, EventArgs e)
{
    PerformSearch();
}

答案 1 :(得分:1)

听起来你的控件在回发中没有绑定,你正在做DataBind()的事件,它是在

之下

if(!IsPostBack) { }

某种包装?

答案 2 :(得分:0)

请确保您的页面更改事件已在脚本管理器中注册,因为它不在更新面板控件中。 ScriptManager.RegisterAsyncPostBackControl(DatePager Control);

答案 3 :(得分:0)

在更新底部的底部执行以下操作:

       <Triggers>
                                <asp:PostBackTrigger ControlID="DataPager1" />
                            </Triggers>
                    </asp:UpdatePanel>

答案 4 :(得分:0)

DataPager的数据控件上使用EnableViewState=false时出现类似问题。