Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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
ASP.net的虚拟列表视图?_Asp.net_Listview_Virtualmode - Fatal编程技术网

ASP.net的虚拟列表视图?

ASP.net的虚拟列表视图?,asp.net,listview,virtualmode,Asp.net,Listview,Virtualmode,是否有ASP.net的虚拟列表视图 我在asp.net中找到的大多数表(以及网格、列表视图、数据表、数据网格、网格视图、列表网格)都希望用户能够浏览数据 我想要一个包含10000个项目的列表视图;我不想要10页 1994年,在“虚拟”模式下使用listview解决了长列表的问题。控件只需指定要显示的项数。根据需要(即,当用户将这些项目滚动到视图中,或尝试在列上排序时)有关这些项目的控制信息 是否有人创建了虚拟listview(可能使用异步Javascript和XML,或同步Javascript

是否有ASP.net的虚拟列表视图


我在asp.net中找到的大多数表(以及网格、列表视图、数据表、数据网格、网格视图、列表网格)都希望用户能够浏览数据

我想要一个包含10000个项目的列表视图;我不想要10页

1994年,在“虚拟”模式下使用listview解决了长列表的问题。控件只需指定要显示的项数。根据需要(即,当用户将这些项目滚动到视图中,或尝试在列上排序时)有关这些项目的控制信息

是否有人创建了虚拟listview(可能使用异步Javascript和XML,或同步Javascript和XML)


如果答案是否定的,不要害怕回答问题。答案是:

否。


试着看一看。我想这就是你想要的。

我只制作了一个虚拟ListView示例

我从一个呈现div的中继器开始,该中继器具有一个包含需要加载的数据库id的属性

<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
        <div data-id="<%# GetID(Container.DataItem) %>" class="DataLine"> 
        loading...
        </div>
    </ItemTemplate>
</asp:Repeater>

可以做的改进:

  • 根据滚动点优化要搜索可见性的div
  • 加载一组数据并将其放置在div上
更新 我进行了一些速度优化,并添加了ajax调用测试。要进行此优化,请更正整个页面中包含数据的div的高度必须相同。左键加载一组数据,将其作为json获取并放置在正确的位置


推特/谷歌风格的“无限”滚动条的缺点是滚动条不再代表可滚动内容的大小。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

<script>
function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = elem.offset().top;
    var elemBottom = elemTop + elem.height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

var cTimerID = null;
function RunWithSomeDelay()
{
    if(cTimerID) 
        clearTimeout(cTimerID);

    cTimerID = setTimeout(CheckWhatToShow, 1000);
}

function CheckWhatToShow()
{
    $(".DataLine").each(function(i, selected) {

        var ThisOne = $(selected);

        if(ThisOne.attr("Done") != "1")
        {
            if(isScrolledIntoView(ThisOne))
            {                   
                ThisOne.attr("Done", "1");
                // here you can use a simple ajax load, to load your data.
                ThisOne.text(ThisOne.attr("data-id"));
            }
        }
    });
}

$(document).ready(function() {  
    // first time run
    CheckWhatToShow();
    // run on scrool
    $(window).scroll(RunWithSomeDelay);
}); 

</script>
public partial class Dokimes_StackOverFlow_VirtualList : System.Web.UI.Page
{
    List<int> oMainIds = new List<int>();

    protected void Page_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < 3000; i++)            
            oMainIds.Add(i);            

        Repeater1.DataSource = oMainIds;
        Repeater1.DataBind();
    }

    public int GetID(object oItem){
        return (int)oItem;
    }
}