问题描述
现在我是绑定数据源,但是数据超过10万就很卡。需要6秒。但是客户不要分页,我用循环一条一条添加,时间是快了点。但是还是很慢。有没有别的方法。求各路大神帮忙。
解决方案
解决方案二:
10万不分页,我看你还是先生成个空表格,然后用户滚动条拖到哪里,就更新哪里的值,其他的不用更新
解决方案三:
为什么要循环呢?
解决方案四:
十万不分页。。。。。卧槽
解决方案五:
引用1楼Z65443344的回复:
10万不分页,我看你还是先生成个空表格,然后用户滚动条拖到哪里,就更新哪里的值,其他的不用更新
然后添加数据的时候可以考虑使用dgv.Rows.AddRange直接添加一个数据包,而不是一条一条的添加
解决方案六:
TO:1L。如果用户一直拉到最低端,那不还是一样嘛。
解决方案七:
引用楼主w4587435的回复:
现在我是绑定数据源,但是数据超过10万就很卡。需要6秒。但是客户不要分页,我用循环一条一条添加,时间是快了点。但是还是很慢。有没有别的方法。求各路大神帮忙。
可以做个隐藏分页,做个自定义的滚动条然后滚动的时候换数据,每次只显示一页固定行数的内容
解决方案八:
To:4L增加一个数据包比循环添加还要慢。添加数据包相当于直接绑定数据源。全部添加。很忙。大概需要七秒。
解决方案:
Quote: 引用6楼f281186676f的回复:
如果直接拉到最低端那不还是一次加载完。应该还是卡吧。
解决方案:
引用3楼f281186676f的回复:
十万不分页。。。。。卧槽卧槽
解决方案:
Quote: 引用8楼w4587435的回复:
没办法。客户需求。
解决方案:
引用5楼w4587435的回复:
TO:1L。如果用户一直拉到最低端,那不还是一样嘛。那就不要把赋值的代码写到滚动条拖动事件里,而是写到timer里之类的这样用户如果一次拖动的过多,中间的代码不需要执行,只赋值他看到的部分就好了
解决方案:
Quote: 引用101楼Z65443344的回复:
好的。我试一下。谢谢。
解决方案:
[Quote:引用11楼Z65443344的回复:]有代码吗?没写出来。
解决方案:
客户不懂技术,但是你自己在实现的时候必须得考虑这个问题一次加载所有数据肯定是不对的,你可以看看qq空间的滚动加载(山寨的谁的就不说了)的思路比如:你可以将一万条(甚至分得再小点2000条)加载到内存绑定其中的100行到界面(界面上始终只有100行)滚动条拉过(OnScroll事件),就去内存中取相应位置的数据刷新界面,如果内存中没有就去查数据放到内存另外datagridview的虚拟模式(也是基于共享行技术)也可适用大数据
解决方案:
一次性将数据都读取出来确实不太实际。可以显示一个等待提示框,在数据读取的时候提示用户已经等待多久了,数据全部读取出来后关闭提示框。
解决方案:
Quote: 引用14楼dongxinxi的回复:
有代码吗?跟着你的思路没写出来。
解决方案:
dgv.DataSource=table;搜完dt然后绑定在dgv上应该就1-2秒吧。哪里要6秒。除非你列非常多。更新的话。更新table然后重新绑一下就好了。
解决方案:解决方案:
引用16楼w4587435的回复:
Quote: 引用14楼dongxinxi的回复:
有代码吗?跟着你的思路没写出来。代码是死的,人是活的
解决方案:
使用DataGridView呈现绑定数据库数据示例privatevoidForm1_Load(objectsender,EventArgse){SqlDataAdaptersda=newSqlDataAdapter(//创建SqlDataAdapter对象"select*fromtb_student","server=WRET-MOSY688YVW\MRGLL;database=db_test;Trusted_Connection=true");DataSetds=newDataSet();//创建数据集DataSet对象sda.Fill(ds);//调用SqlDataAdapter对象的Fill()方法填充数据集dataGridView1.DataSource=ds.Tables[0];//将数据集绑定到DataGridView1控件}
解决方案:
可以使用虚拟模式配合分页加载来实现,DataGridView.VirtualMode,http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.virtualmode(v=vs.110).aspx不过10万条数据说实话真的没有意义,客户他有本事10万条数据一条一条看吗,我看是客户在故意为难你们吧,撑爆他的内存。
解决方案:
我记得gridview有个滚动条事件,滚动的时候去加载所需数据,为了防止影响用户滚动的体验,最好在事件中另外开线程去取数据并绑定。
解决方案:
这么多数据不卡就怪了时间: 2024-12-30 22:00:57