1

我对更改datapager时间有疑问。datasourcelistview

例子:

<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包含让我们说 100records没有filter. 根据Datapager显示。pagenumberspagesize

现在,如果我选择任何页面1st,然后输入filter返回的页面少于当前选择的页面;datapager停留在先前选择的页面上,listview即使有一些记录也不显示。

知道为什么会这样吗?

4

2 回答 2

0

好的,我有同样的问题,我解决它的方式:

添加:AutoPostBack=true 到 Textbox 以及 OnTextChanged 和 filter_TextChanged:SetPageProperties(0,PageSize,true)

希望能帮助到你。

于 2014-04-03T04:57:58.250 回答
0

我想我想通了。经过几次尝试;这终于奏效了。

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

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

于 2013-06-21T07:13:24.930 回答