当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
而不是filter
。 Datapager
根据pagenumbers
显示pagesize
。
现在,如果我选择除1st
之外的任何页面,然后输入filter
,其返回的页数少于当前所选页面的页数; datapager
保留在之前选择的页面上,listview
即使有一些也没有显示任何记录。
知道为什么会这样吗?
答案 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)
希望它有所帮助。