当前位置:编程学习 > C#/ASP.NET >>

aspx 页绑定 5000 条数据的问题,请高手帮忙!菜鸟无进!

我有一个aspx 页需要绑定 5000条数据

每条数据有20列,每列都有 onMouseOver、onMouseOut、onClick、onDblClick 这些事件

如果5000条数据中不包含 以上事件,绑定在页面上只需要 2-4秒钟。

但是包含这些时间 速度就增加了10-12倍

不知那位高手可以解决这个难题。

--------------------编程问答-------------------- 对此不是很清楚。。
但是你难道不能考虑下分页吗?
一定要一页5000条?? --------------------编程问答-------------------- 数据量太大要考虑分页显示 --------------------编程问答-------------------- 大哥大姐门,如果能使用分页就不用问这个问题了。 --------------------编程问答-------------------- 用不着没列都绑定事件吧  --------------------编程问答-------------------- sf
引用 3 楼 rqc135 的回复:
大哥大姐门,如果能使用分页就不用问这个问题了。
--------------------编程问答-------------------- 现在的onMouseOver这些事件都是写在标签里的??

用jquery指定试试看

$("#tb").mouseover(function(){
 ...
}) --------------------编程问答-------------------- 用户是希望把WEB程序当应用程序使用,每页显示5000条还算少的。
还有,如果不是没条数据都有时间,如何实现脚本功能? --------------------编程问答-------------------- 不用分页的话,看能不能把绑定的事件简化下,能不能事后去绑定事件呢,可采用jquery看下 --------------------编程问答-------------------- jquery 不适合使用在大数据列表中,拿5000条来说,单单是用jquery 来绑定脚本事件,页面就等到无响应状态了。 --------------------编程问答--------------------
引用 7 楼 rqc135 的回复:
用户是希望把WEB程序当应用程序使用,每页显示5000条还算少的。
还有,如果不是没条数据都有时间,如何实现脚本功能?

你怎样添加的 onMouseOver、onMouseOut、onClick、onDblClick 这些事件?用JS不应该这么浪费时间 --------------------编程问答-------------------- <ul onMouseOver="" onMouseOut="" onClick="" onDblClick="">
<li class="l1"><%#Eval("rId")%></li>
.. 中间20列
<li class="l1"><%#Eval("setDate")%></li>
</ul>
这样的的写法比jqeury 快了许,但是5000条,页面还是慢到无响应
--------------------编程问答-------------------- 5000条不算多,随便绑都可以吧 --------------------编程问答-------------------- 如果不包含 onMouseOver="" onMouseOut="" onClick="" onDblClick="" 事件 1W条数据也能很快显示出来  
--------------------编程问答-------------------- 帮顶 学习 --------------------编程问答-------------------- 用jquery 或者javascript 这些都是客户端代码!应该会节省时间~! --------------------编程问答-------------------- 这网页一定很大吧...生成静态页面可以吗? --------------------编程问答-------------------- 对于没有测试过的朋友请 先测试对比一下效果。
jquery 的速度能比在页面上直接写 事件快么?
我再强调以下,jqeury 不适合用在大量数据中。 --------------------编程问答-------------------- 使用jQuery
$("#div li").bind(click(function(){
//
})); --------------------编程问答-------------------- foreach  --------------------编程问答-------------------- 生成静态页面 是否需要遍历数据源,然后再写出来。
这个速度还没有直接绑定的速度快!
别说要在没行增加脚本事件了,就算5000条没有脚本事件。
花的时间都要比默认的绑定时间多。 --------------------编程问答-------------------- 给楼主一个思路,不知是否可行

你初始化页面时先绑定onMouseOver,onMouseOut事件
然后在onMouseOver事件中在绑定onClick ,onDblClick事件
这样初始化时只绑定两个事件,每行只有当你鼠标放上去了才绑定另外两个事件 --------------------编程问答--------------------
引用 17 楼 rqc135 的回复:
对于没有测试过的朋友请 先测试对比一下效果。
jquery 的速度能比在页面上直接写 事件快么?
我再强调以下,jqeury 不适合用在大量数据中。


汗, jq不适合大数据量? 方法问题吧. 

jquery 不适合使用在大数据列表中,拿5000条来说,单单是用jquery 来绑定脚本事件,页面就等到无响应状态了。

不会是每一个Element对象都绑定一次吧.

绑定整个页面, 之后通过鼠标事件触发的id来判断到底是点击到哪一个Element对象了.


--------------------编程问答-------------------- vip__888 朋友你好,感谢你的建议,不过麻烦你看一下,回帖在回答!谢谢! --------------------编程问答-------------------- 一页5000, 这样的用户可以易做图了. --------------------编程问答-------------------- 绑定$(document)的onMouseOver、onMouseOut、onClick、onDblClick 这些事件.根据触发事件的id做不同的处理, --------------------编程问答-------------------- kkbac 朋友你好:
5000条数据 里面的每一行都需要有 鼠标事件,如果不是这样,用户点击到这个行又如何能触发事件。

还有 不管你用哪种方式去绑定 事件 是不是在初始化页面的时候 每个<ul></ul>都必要要有事件。

这样的话页面就无响应了,如果有所怀疑的大家可以动手做个测试。

再次感谢你们的帮助! --------------------编程问答-------------------- xyyz150 朋友你好:

5000条 每行绑定一个事件和绑定 10个事件之间所耗用的时间 不超过1秒

我测试过只绑定一个事件和没绑定脚本事件 之间差了10-12倍 --------------------编程问答-------------------- select top 分页
绑定 --------------------编程问答-------------------- 用户是希望 5000条以 分1页 --------------------编程问答-------------------- --------------------编程问答-------------------- zzyukaiqiang 朋友你好:
我来此是希望大家可以帮我解决掉这个难题,没有鄙视任何人的意思。

我希望把问题描述的更清楚点,如果伤到各位朋友,我表示道歉。

我希望有人能帮助我解决掉这个问题,谢谢大家! --------------------编程问答--------------------
引用 26 楼 rqc135 的回复:
kkbac 朋友你好:
5000条数据 里面的每一行都需要有 鼠标事件,如果不是这样,用户点击到这个行又如何能触发事件。

还有 不管你用哪种方式去绑定 事件 是不是在初始化页面的时候 每个<ul></ul>都必要要有事件。

这样的话页面就无响应了,如果有所怀疑的大家可以动手做个测试。

再次感谢你们的帮助!


只绑定$(document).click等事件. 这样用户在整个页面点击都可以捕捉到点击事件了.
点击事件发生的时候.可以取得触发事件的时候对象. 之后判断对象,做不同处理. 

这里是jq的event.target文档. 点开就看到了.
http://api.jquery.com/event.target/ --------------------编程问答-------------------- 你显示这写数据能直接用girdview来显示,onMouseOver、onMouseOut、onClick、onDblClick 这些事件直接写在girdview控件的rowcommand事件里面应该会好一点吧!!要不你试试!! --------------------编程问答-------------------- zzyukaiqiang 你好:

其实来这里的都是菜鸟,谁能说自己是高手呢!

还有,zzyukaiqiang  朋友的第一个回帖就是骂人, 还有你看待问题的出发点有点问题。

不能说我们解决不掉问题就 怪罪 别人提出问题的人吧!

我的标题出的是不够友好,不过如果你遇到着急的问题,不是也希望有高手能帮你解决么? --------------------编程问答--------------------
引用 31 楼 rqc135 的回复:
zzyukaiqiang 朋友你好:
我来此是希望大家可以帮我解决掉这个难题,没有鄙视任何人的意思。

我希望把问题描述的更清楚点,如果伤到各位朋友,我表示道歉。

我希望有人能帮助我解决掉这个问题,谢谢大家!


描述的更加清楚.就一定要加一句菜鸟勿进么?我可能解答不了,来坐等答案.但这句话让人很不爽.可能所谓的高手不会在乎这句话. --------------------编程问答-------------------- kwpirate 朋友你好:

感谢你提供的思路,我做个测试先!

kkbac 朋友你好:
你的思路我了解了,不过 $(document).click 如何能解决  onMouseOver、onMouseOut 这两个事件呢?


--------------------编程问答--------------------
引用 20 楼 rqc135 的回复:
生成静态页面 是否需要遍历数据源,然后再写出来。
这个速度还没有直接绑定的速度快!
别说要在没行增加脚本事件了,就算5000条没有脚本事件。
花的时间都要比默认的绑定时间多。

你若只是读取数据,再加些JS事件,只要数据有改动的时候生成一次,客户浏览时只访问静态页。没必要每次都生成静态页面啊。除非你这一页5000条数据改动非常频繁,即使非常频繁,你也可以每隔一段时间将改动的数据从新生成。
还有一种方法,我看google阅读器发现,它里面的数据是一边看一边加载的,如果导航条放下拉,它会自动加载更多条信息。你可以研究一下,应该是个AJAX应用。 --------------------编程问答-------------------- zzyukaiqiang 朋友你好:

如果对asp.net 不熟悉,对js 不熟悉,我的这个问题是很难找到答案的,我之所以加上那句话是还是希望能有人帮我提供思路, 我在这个问题上已经花了1周时间了,没能得到很好的解决。

请理解我的心情,当然我也很理解你的心情,请无大家勿怪! --------------------编程问答--------------------
引用 36 楼 rqc135 的回复:
kwpirate 朋友你好:

感谢你提供的思路,我做个测试先!

kkbac 朋友你好:
你的思路我了解了,不过 $(document).click 如何能解决  onMouseOver、onMouseOut 这两个事件呢?


你可以记录上一次鼠标移动的对象id. 之后鼠标移动的时候判断当前对象id和上一次是否相同
如果不同就是移出了. 如果相同就是没有移出.
之后做处理,之后记录上一次鼠标移动的对象id,..... --------------------编程问答--------------------
引用 34 楼 rqc135 的回复:
zzyukaiqiang 你好:

其实来这里的都是菜鸟,谁能说自己是高手呢!

还有,zzyukaiqiang 朋友的第一个回帖就是骂人, 还有你看待问题的出发点有点问题。

不能说我们解决不掉问题就 怪罪 别人提出问题的人吧!

我的标题出的是不够友好,不过如果你遇到着急的问题,不是也希望有高手能帮你解决么?


来这里的都是菜鸟??你是不知道这里的水深呀 --------------------编程问答-------------------- olanty 朋友你好:

5000数据是经常被替换的,使用静态页面生成可能是行不通。
不过你下面的建议挺好的。
之前我也有做过Ajax实例, 我先拿到数据源,再遍历 <ul>..</ul>,然后100条 100条写到页面。
即使是这样 5000条写完花的时间也不少, 还有一个致命问题是,当不断写数据的时候。 正个页面会卡。
如果是 1条 1条写,页面不卡,但是5000条写完所用的时间就太长了。 --------------------编程问答-------------------- ch_weni 朋友你好:

呵呵,我觉得正真的高手很少在江湖出现滴...
 
个人意见 请不要见笑! --------------------编程问答-------------------- ch_weni 朋友你好:

我做程序已经有8年多了,也算是老战士了。

我身边的高手也很少 以高手自称的。

所以有此想法!

--------------------编程问答--------------------
引用 41 楼 rqc135 的回复:
olanty 朋友你好:

5000数据是经常被替换的,使用静态页面生成可能是行不通。
不过你下面的建议挺好的。
之前我也有做过Ajax实例, 我先拿到数据源,再遍历 <ul>..</ul>,然后100条 100条写到页面。
即使是这样 5000条写完花的时间也不少, 还有一个致命问题是,当不断写数据的时候。 正个页面会卡。
如果是 1条 1条写,页面不卡,但是5000条写完所用的时间……

可是google reader完全不卡,我虽然没试过具体怎么做,但思路应该可行。像我遇到的一般应用,读取数据才是最慢的,如果利用AJAX,首次只读取100条写入页面,然后当用户需要时(就像滚动鼠标向下翻页),再读取10条追加到网页里。理论上应该不会太卡的。你再在加载更多数据的时候设置一个延迟,防止用户不停的向下翻页。 --------------------编程问答-------------------- olanty 朋友你好:

这样的话还有一个问题,当页面有100条数据了,如果用户把滚动条移到顶,在用滚轮下翻, 这样还是持续网页面写数据么?
用户对电脑基本上都不懂,如果他一直滚动滚轮 ,再加上滚动延迟, 页面就会直接增加数据,这样页面还会卡。 --------------------编程问答-------------------- 向上翻页不触发加载事件。 --------------------编程问答-------------------- 我觉得google reader可能是计算滚动条或者网页位置与屏幕的比例的,绝不是简单的上滚下滚 --------------------编程问答-------------------- 如果没有postback的服务端事件的话,建议EnableViewState="false"把 EnableViewState去除掉。说实话我一次性绑定500条,下拉滚动条都很困难,ie相应很慢 --------------------编程问答-------------------- 我觉得你应该先把以前的帖子结了  在来问问题 --------------------编程问答-------------------- 额,原来 这是你第一个帖子 --------------------编程问答-------------------- 很好奇 楼主的是什么项目 


5000条 的话 为什么不想 google reader 一样  先显示几十条  等往下边滚动的时候 再加载下边几十条数据. --------------------编程问答-------------------- 这种情况,考虑缓存吧 --------------------编程问答--------------------
引用 15 楼 xiao19883352 的回复:
用jquery 或者javascript 这些都是客户端代码!应该会节省时间~!

up --------------------编程问答-------------------- 用objectDataSource和数据缓存试下 --------------------编程问答-------------------- 那不用服务器端的事件不就好了。。。 --------------------编程问答-------------------- 试试ASP写法。
用repeater绑 --------------------编程问答-------------------- --------------------编程问答-------------------- ajax分布加载:
每1s载入1000条这样加载。

ajax根据鼠标事件加载:
首先载入前N条,根据你的页面显示确定前N条;当页面滚动时再载入N条,这样,访问多少载入多少。体验会好一些。


另外那些onclick onmouseover等事件用jquery动态加事件,也许好一些 --------------------编程问答-------------------- 你可以考虑下绑定的时候加个连接
把参数传到一个空的页面调用方法处理你本来要处理的click事件 --------------------编程问答-------------------- 页面?5000条记录?是给人看还是写着玩? --------------------编程问答-------------------- 如果想把web页当应用程序,就多考虑c#代码,我就想你的5000行总该用什么控件来绑定吧,假设用gridview
做例子,给gridveiw添加这些事件,通过事件来判断是哪一行的事件应该可以实现 --------------------编程问答-------------------- 以前好像看过有这样一个控件,可以往下拉滚动条时才加载要显示的内容,应该就是你要的,但忘了在哪里看到了. --------------------编程问答-------------------- 路过,飘过. --------------------编程问答-------------------- 数据分段 延期加载  严重赞同#51楼  --------------------编程问答-------------------- 可以考虑在事件分离出来处理,如果第条数据都绑很多事件,每次回送的时候会有大量的viewstate状态信息跟着,速度就很慢了 --------------------编程问答-------------------- 利用滚动条 做  “分页”

脚本最后加载 --------------------编程问答-------------------- JQ lazy load.js --------------------编程问答-------------------- 包含了事件的部分就使得加载时间变长,说明这部分html代码太长了

1.你用httpwatch看看真正占时间长的是哪部分,再做处理

2.事件采用后期js追加的方式,不要写在每个列里 --------------------编程问答--------------------
引用 60 楼 sp1234 的回复:
页面?5000条记录?是给人看还是写着玩?

我顶 --------------------编程问答--------------------
引用 69 楼 qq22345111 的回复:
引用 60 楼 sp1234 的回复:
页面?5000条记录?是给人看还是写着玩?

我顶

   我再顶 --------------------编程问答-------------------- $("#tb").mouseover(function(){
 ...
})

$("#tb").mouseover(function(){
...
})

这个可以解决吧~
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,