2012-10-13 39 views
2

我有一個列表視圖,它裏面有一些動態的HTML,我想要做的是每次單擊Load More按鈕時顯示10條記錄,但問題是每次我獲取新記錄時都會被舊的記錄替換,它們不會在最後附加。ASP.NET:如何在ListView末尾添加行以實現「加載更多」功能?

我有一個列表視圖與一個ObjectDataSource:

<asp:ListView .... DataSourceID="ObjectDataSource1" /> 
    <ItemTemplate> 
    <div id="content" runat="server"> 
    // Some dynamically generated HTML 
    </div> 
    </ItemTemplate> 
</asp:ListView> 

這裏是我的對象數據源:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetActivities" TypeName="MyLocation > 
     <SelectParameters> 
      <asp:Parameter Name="pageSize" DefaultValue="10" Type="Int32" /> 
      <asp:Parameter Name="pageNumber" DefaultValue="0" Type="Int32" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 

下面是我的LoadMore按鈕的代碼:

this.ObjectDataSource1.SelectParameters["pageNumber"].DefaultValue = (int.Parse(this.ObjectDataSource1.SelectParameters["pageNumber"].DefaultValue) + 1).ToString(); 

這增加每次點擊LoadMore按鈕時頁碼會輪流提取下一頁記錄,但是問題在於記錄正在被替換,我想將它們追加到列表視圖的末尾。

+0

您是否考慮過使用JQuery - AJAX - REST Services/OData Services的客戶端方法? – Jupaol

+0

@Jupaol我現在唯一的選擇是服務器端與次要客戶端解決方案,你知道我想要的服務器端解決方案可以實現嗎?托馬斯建議CUstom分頁,但我不知道Custom Paging如何解決我的問題。 –

回答

2

而不是在LoadMore方法中使用pageNumber,你不能只增加10的pageSize?也許與一個更新面板組合!

+0

感謝您的建議,但我已經嘗試過,這種方法的問題在於,每次單擊Laod More按鈕時都會提取所有記錄,而我發現該按鈕特別慢,特別是在您加載多條記錄時, m尋找一種方法來只抓取下10條記錄並將它們追加到ListView的末尾。 –

+0

@EricBergman我明白了。然後我認爲你必須做一些服務器端分頁。這可以通過將頁面大小和當前頁碼作爲參數的存儲過程來完成。 http://www.4guysfromrolla.com/articles/031506-1.aspx http://www.dotnetcurry.com/ShowArticle.aspx?ID=267這兩個鏈接做的是這樣的...有更多,如果你搜索服務器端分頁..希望它有幫助! – Thomas

+0

感謝您的建議,但我仍然不知道如何通過自定義分頁來實現我想要的功能,您是否可以給我提示或者如果遇到這種情況,您會做什麼樣的例子?謝謝。 –