2016-04-15 3 views
0

私は上記の質問に対する答えをあまり見つけようとしていません - おそらく私は間違った質問をしたり間違った方法をとっています。ListViewコントロール - より多くのアイテムを取得

私はC#、Asp.Netを使用していますが、フレームワークのバージョン4ではまだ使用しています。

私はリストビューコントロールを使用して、有限個のアイテムを表示します。通常、私は10項目を表示し、ページングを追加しますが、私はこの機会には少し違ったアプローチを探しています。

多くの最新のアプリケーションと同様に、私は「もっと」ボタンを追加していなくて、既に持っているページアイテムに追加するだけではいけません。確かに戻って10の代わりに20個のアイテムを取得して再バインドすることができますが、数回クリックすると(30,40,50 ...)、これは扱いにくく非常に遅くなる可能性があります。

私はAjaxで多大な努力をしていないので、それを追求する代替手段かもしれませんが、まったく間違ってしまうのではなく、ちょっとしたアドバイスに感謝します。

ありがとうございます。

+0

、クエリ結果をページ分割する方法をここで見つけることができます。http://social.technet.microsoft.com/wiki/contents/articles/23811.paging-a-query-with-sql-server .aspx いくつかコードを投稿できますか?それはソリューションのサーバー側が正しいですか? ListViewの代わりにリピータを使用することを提案できますか? – Emanuele

+0

私はクエリ結果をページ付けする方法を知っていますが、私が求めているのはページングではなく、データを置き換えるのではなくデータを拡張することです。 –

+0

ASP.NETリストビューで「無限スクロール」を検索することで、いくつかのアイデアを得ることができます。ここにいくつかの興味深いリファレンスを提供するリンクがあります:https://social.msdn.microsoft.com/Forums/windowsapps/en-US/9d3cadd3-dc95-4219-9f90-e1aae6ad25c8/infinite-scrolling-with-listview?forum= winappswithcsharp。 – ConnorsFan

答えて

0

あなたはそれをサーバ側またはクライアント側で実現できます。

サーバーサイド -

List<Foo> foos = new List<Foo>(); 
private FillList() 
{ 
    //... 
} 

private int CurrentPage 
    { 
     get 
     { 
      object obj = ViewState["CurrentPage"]; 
      if (obj != null) 
       return (int)obj; 
      return 0; 
     } 
     set 
     { 
      ViewState["CurrentPage"] = value; 
     } 
    } 

private void RptBind(int curPage, int pageSize) 
{ 
    rptFoos.DataSource = foos.Skip(pageSize * curPage).Take(pageSize); 
    rptFoos.Databind(); 
} 

protected void btnNext_Click(object sender, EventArgs e) 
{ 
    CurrentPage += 1; 
    RptBind(CurrentPage, 10); 
} 

を持っていると仮定し、リピータ:

<asp:Repeater runat="server" id="rptFoos"> 
    <ItemTeplate> 
      <asp:Label runat="server" id="lblFoo" Text="<%# ((Foo)Container.DataItem).Name %>"> 
    </ItemTemplate> 
</asp:Repeater> 
<asp:Button runat="server" id="btnNext" Text="Next" OnClick="btnNext_Click"> 

上記のコードをテストされていません。質問はデータベースが含まれている場合

+0

これはページングであり、私はページングを探していません - 毎回データソースを置き換えるのではなく、データソースを拡張しようとしています - 最初に10回、次回20回、次回30回、そうです。 –

+0

このコードは簡単に変更できます: 'foos.Skip(pageSize * curPage).Take(pageSize);' – Emanuele

関連する問題