2013-06-19 69 views
1

datasourcelistview變化時,我得到datapager的問題。ASP .NET Datapager和數據源

實施例:

<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 recordsfilter沒有。 Datapager根據pagesize顯示pagenumbers

現在,如果我選擇除1st之外的任何頁面,然後輸入filter,它將返回比當前選定頁面少的頁面; datapager停留在先前選擇的頁面上,並且listview即使有一些也不顯示記錄。

任何想法爲什麼會發生這種情況?

+0

如果'StartRowIndex'>'TotalRowCount'嘗試了'SetPageProperties',但它不起作用。不知道如何解決這個問題。 – majk86

回答

0

猜我想通了。經過幾次嘗試;這終於奏效了。

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

每次過濾器更改; datapager設置爲第一頁。希望它能幫助任何有同樣問題的人。

0

好吧,我有同樣的問題,我解決的方式:

添加:的AutoPostBack = true以文本框隨着OnTextChanged 並以filter_TextChanged:SetPageProperties(0,每頁,真)

希望它可以幫助。