ListView控件 - 获得更多项目
我试图找到答案对上述问题没有取得多大成功 - 或许我问错了问题或采取错误的做法。ListView控件 - 获得更多项目
我使用C#,Asp.Net,但仍然在框架的4版本。
我使用一个列表视图控件来显示项目的数量有限。通常,我会显示10个项目并添加分页,但是我正在寻找一种略有不同的方法。
像许多现代的应用程序,我wan't添加一个“更多”按钮,并简单地追加到我已经有网页的项目,但我看不出这怎么可能。当然,我可以回去拿20件东西,而不是10件,然后重新绑定,但是在点击几次后(30,40,50 ...),这很可能会变得非常慢,很慢。
我对Ajax没有做太多的工作,所以它可能是一种可以追求的途径,但并不是在完全错误的情况下潜水,而是希望得到一些关于如何最好地接近它的建议。
在此先感谢。
可以实现它的服务器端或客户端。
服务器端 - 假设有一个
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">
上面的代码是未经测试。
再次,这是分页,我不寻找分页 - 我期待扩展数据源,而不是每次都更换 - 所以第一次我可能会显示10个结果,下一个20,下一个30和等等。 –
您可以轻松更改此代码: 'foos.Skip(pageSize * curPage).Take(pageSize);' – Emanuele
如果问题涉及到数据库,你可以在这里找到如何分页查询结果:http://social.technet.microsoft.com/wiki/contents/articles/23811.paging-a-query-with-sql-server .aspx 你能发表一些代码吗?它是正确的解决方案服务器端? 我可以建议使用Repeater而不是ListView吗? – Emanuele
我知道如何分页查询结果,但我要求的不是分页 - 它扩展数据而不是替换它。 –
您可以通过在ASP.NET ListViews中搜索“无限滚动”来获得一些想法。以下链接提供了一些有趣的参考资料:https://social.msdn.microsoft.com/Forums/windowsapps/en-US/9d3cadd3-dc95-4219-9f90-e1aae6ad25c8/infinite-scrolling-with-listview?forum= winappswithcsharp。 – ConnorsFan