ASP .NET Datapager和数据源

时间:2013-06-19 13:07:14

标签: asp.net listview sqldatasource datapager

datapager datasource更改时,listview出现了问题。

示例:

<asp:TextBox ID="filter" runat="server" />
<asp:ListView ID="listview" DataSourceID="datasource" runat="server">
    <LayoutTemplate>
        ...
    </LayoutTemplate>
    <ItemTemplate>
        ...
    </ItemTemplate>
</asp:ListView>
<asp:DataPager ID="datapager" PagedControlID="listview" runat="server">
    <Fields>
        <asp:NumericPagerField />
    </Fields>
</asp:DataPager>
<asp:SqlDataSource ID="datasource" ConnectionString="..." PageSize="10"
                   SelectCommnad="SELECT * FROM [...] WHERE [...] LIKE @filter"
                   runat="server">
    <SelectParameters>
        <asp:ControlParameter Name="filter" ControlID="filter"
                              DbType="String" PropertyName="Text" />
    </SelectParameters>
</asp:SqlDataSource>

Listview包含100 records而不是filterDatapager根据pagenumbers显示pagesize

现在,如果我选择除1st之外的任何页面,然后输入filter,其返回的页数少于当前所选页面的页数; datapager保留在之前选择的页面上,listview即使有一些也没有显示任何记录。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

猜猜我弄明白了。经过几次尝试;这终于有效了。

protected void filter_TextChanged(object sender, EventArgs e)
{
    this.dataPager.SetPageProperties(0, this.Invoices_DataPager.PageSize, false);
    this.listview.DataBind();
}

每次过滤器更改; datapager设置为第一页。希望它可以帮助任何有同样问题的人。

答案 1 :(得分:0)

好的,我的解决方法与我的问题相同:

在文本框中添加:AutoPostBack = true以及OnTextChanged 并且filter_TextChanged:SetPageProperties(0,PageSize,true)

希望它有所帮助。