通过DataGridView分段显示数据
来源:互联网 发布:最大公约数c语言程序 编辑:程序博客网 时间:2024/06/05 12:49
前段时间在用datagridview显示数据的时候意识到由于需要显示的数据过大,同时用户查看数据的时候一般只要查看近几天的数据,为了防止数据量的过大导致查询过慢,想到之前在手机上看火车票的时候当拉到底部的时候会又刷新一部分数据。所以想做一个这种样式的datagridview的事件,在网上找到这样一个事例,所以记下来参考。
参考事例如下:
通过DataGridView可以到达分段显示数据的效果,即通过设定每次加载数据的最大数量,当滚动条滚动到dataGridView底部时就会继续加载后面一定数量的数据。
Demo如下(首先在Form中添加一个DataGridView,默认命名为dataGridView1):
首先在Winform界面上放一个DataGridView控件,然后在往该控件添加一列,否则运行时会报错,显示未添加任何列,无法添加行数据。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication30 { public partial class Form1 : Form { private DateTime lastLoading; private int firstVisibleRow; private ScrollBars gridScrollBars; public Form1() { InitializeComponent(); //attach scroll event. dataGridView1.Scroll += new ScrollEventHandler(dataGridView1_Scroll); //load first 100 rows. LoadRows(); } //将datagridview的滑动条保存在变量里并隐藏。便于在重载后,更新滑动条。 private void HideScrollBars() { gridScrollBars = dataGridView1.ScrollBars; dataGridView1.ScrollBars = ScrollBars.None; } //在这里,将datagridview的滑动条显示出来。这时,滑动条的位置会根据行数的变化而变化。 private void ShowScrollBars() { dataGridView1.ScrollBars = gridScrollBars; } //获取显示的行数 private int GetDisplayedRowsCount() { int count = dataGridView1.Rows[dataGridView1.FirstDisplayedScrollingRowIndex].Height; count = dataGridView1.Height / count; return count; } private void LoadRows() { HideScrollBars(); System.Diagnostics.Debug.WriteLine("Load data"); lastLoading = DateTime.Now; //create rows for (int i = 0; i < 100; i++) { int n =dataGridView1.Rows.Add(); dataGridView1.Rows[n].Cells[0].Value = "Row - " + n.ToString(); } //reset displayed row if (firstVisibleRow > -1) { ShowScrollBars(); dataGridView1.FirstDisplayedScrollingRowIndex = firstVisibleRow; } } void dataGridView1_Scroll(object sender, ScrollEventArgs e) { if (e.Type == ScrollEventType.SmallIncrement || e.Type == ScrollEventType.LargeIncrement) { if (e.NewValue >= dataGridView1.Rows.Count - GetDisplayedRowsCount()) { //prevent loading from autoscroll. TimeSpan ts = DateTime.Now - lastLoading; if (ts.TotalMilliseconds > 100) { firstVisibleRow = e.NewValue; LoadRows(); } else { dataGridView1.FirstDisplayedScrollingRowIndex = e.OldValue; } } } } } }
0 0
- 通过DataGridView分段显示数据
- 通过DataGridView分段显示数据
- DataGridView 如何显示数据
- DataGridView显示、更新数据
- dataGridView分页显示数据
- DataGridView显示数据
- DataGridView实现分页显示数据
- 关于DataGridView显示数据问题。
- DataGridView数据显示到Excel
- Datagridview数据显示问题查错
- winform DataGridView 分页显示数据
- 将数据库中的数据读取到数据表中,并通过datagridview显示
- C# 面试 (datagrid || datagridView显示数据)
- Chapter6: 使用DataGridView控件显示数据
- c# bindingSource联合dataGridView显示数据
- datagridview无数据显示问题处理
- DataGridView数据过长显示不全解决办法
- dataGridView将数据显示到textBox
- sendevent
- 远程桌面不能复制粘贴解决办法
- SQL 传入特殊符号 单引号 ' 导致的问题及解决办法
- 进程和线程的区别
- sql中去掉字段的空格或多余字符
- 通过DataGridView分段显示数据
- 隐藏文件
- 获取数据库中的数据变化情况
- CarPlay wired(USB)连接方案
- Error:(1, 0) Plugin with id 'com.android.application' not found
- HTML5--Audio(音频)
- MFC 向指定窗口发送自定义消息
- mysq字段类型转换
- 365. Water and Jug Problem