Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ListView控件-获取更多项目_C#_Asp.net_Ajax_Listview - Fatal编程技术网

C# ListView控件-获取更多项目

C# ListView控件-获取更多项目,c#,asp.net,ajax,listview,C#,Asp.net,Ajax,Listview,我试图找到上述问题的答案,但没有多大成功——也许我问错了问题或采取了错误的方法 我使用的是C#,Asp.Net,但是仍然是框架的版本4 我使用listview控件来显示有限数量的项。通常情况下,我会显示10个项目并添加分页,但在这种情况下,我会寻找一种略微不同的方法 像许多现代应用程序一样,我不想添加“更多”按钮,只想在我已有的页面项目中添加内容,但我看不出这是怎么可能的。当然,我可以返回并获得20个项目,而不是10个项目,然后重新绑定,但在几次单击(30、40、50…)后,这可能会变得非常笨拙

我试图找到上述问题的答案,但没有多大成功——也许我问错了问题或采取了错误的方法

我使用的是C#,Asp.Net,但是仍然是框架的版本4

我使用listview控件来显示有限数量的项。通常情况下,我会显示10个项目并添加分页,但在这种情况下,我会寻找一种略微不同的方法

像许多现代应用程序一样,我不想添加“更多”按钮,只想在我已有的页面项目中添加内容,但我看不出这是怎么可能的。当然,我可以返回并获得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);
}
List foos=new List();
私有填充列表()
{
//...
}
私有int当前页
{
得到
{
object obj=ViewState[“CurrentPage”];
如果(obj!=null)
返回(int)obj;
返回0;
}
设置
{
ViewState[“CurrentPage”]=值;
}
}
私有void RptBind(int curPage,int pageSize)
{
rptFoos.DataSource=foos.Skip(pageSize*curPage).Take(pageSize);
rptFoos.Databind();
}
受保护的void btnNext_单击(对象发送方,事件参数e)
{
当前页面+=1;
RptBind(当前第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">


上述代码未经测试。

如果问题涉及数据库,您可以在此处找到如何对查询结果进行分页:您可以发布一些代码吗?它是解决方案服务器端吗?我可以建议使用Repeater而不是ListView吗?我知道如何对查询结果进行分页,但我要问的不是分页,而是扩展数据而不是替换数据。您可以通过在ASP.NET ListView中搜索“无限滚动”来获得一些想法。这里有一个链接提供了一些有趣的参考:。再一次,这是分页,我不是在寻找分页-我想扩展数据源,而不是每次替换它-所以第一次我可能会显示10个结果,下一次20个,下一次30个,依此类推。您可以很容易地更改此代码:
foos.Skip(pageSize*curPage)。取(页面大小)