winform 监视DataGridView的滚动条,加载数据
2013-11-28 15:51
316 查看
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Diagnostics; using System.IO; using System.Data.SqlClient; namespace temp { public partial class ttt : Form { public ttt() { InitializeComponent(); } SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=ManageDatas;integrated security=true;"); int index = 1; /// <summary> /// 是否继续加载数据 /// </summary> bool getDataContinue = true; private void ttt_Load(object sender, EventArgs e) { //this.WindowState = FormWindowState.Maximized; do { AddNew(); } while (Verify()); } private void button1_Click(object sender, EventArgs e) { } /// <summary> /// 加载数据 /// </summary> void AddNew() { DataTable newData = GetData(index); if (newData != null && newData.Rows.Count > 0) { if (dataGridView1.Columns.Count == 0) for (int i = 0; i < newData.Columns.Count; i++) dataGridView1.Columns.Add(newData.Columns[i].ColumnName, newData.Columns[i].ColumnName); foreach (DataRow dr in newData.Rows) { int newIndex = dataGridView1.Rows.Add(); for (int i = 0; i < dr.ItemArray.Count(); i++) dataGridView1.Rows[newIndex].Cells[i].Value = dr[i]; } } else getDataContinue = false; } /// <summary> /// 获取指定页数据 /// </summary> DataTable GetData(int page,int size=20) { string sqlstr = string.Format(@"WITH TB AS (SELECT ROW_NUMBER()OVER(ORDER BY intid ASC) AS rowid,* FROM tblbuyermsg) SELECT * FROM TB WHERE rowid between {0} and {1}", (page - 1) * size + 1, page * size); SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn); DataTable dt = new DataTable(); da.Fill(dt); index++; return dt; } /// <summary> /// 验证是否需要加载数据 /// </summary> /// <returns>需要加载则返回true</returns> bool Verify()//gridView高度不能太低 { if (!getDataContinue) return false; bool bottom = false; //若gridView高度太低,则考虑 if (dataGridView1.Height < 40 && dataGridView1.FirstDisplayedScrollingRowIndex > dataGridView1.Rows.Count - 3) bottom = true; else { int rowsHeight = 0; for (int i = dataGridView1.FirstDisplayedScrollingRowIndex; i < dataGridView1.Rows.Count; i++) { //if (i < 0) i = 0; rowsHeight += dataGridView1.Rows[i].Height; if (rowsHeight - dataGridView1.Height > 30) { return false; } } bottom = true; } return bottom; } private void dataGridView1_Scroll(object sender, ScrollEventArgs e) { if (Verify()) AddNew(); } private void dataGridView1_Resize(object sender, EventArgs e) { do { AddNew(); } while (Verify()); } } }
相关文章推荐
- Datagridview中的数据很多,加载完数据后滚动条自动到最下边,如何解决?
- winform DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部 z
- [转]Datagridview中的数据很多,加载完数据后滚动条自动到最下边的方法
- VS2010 c# winform中datagridview控件初次加载时去除默认选中第一行数据
- 在WinForm中增加查询对话框对DataGridView数据进行循环查找
- winform清空DataGridView中的数据
- 在Winform中向DataGridView控件添加数据的三种方式
- 【原创】模仿微博拉动滚动条加载数据
- WinForm 2.0 无代码实现DataGridView数据和下拉框和文本框的同步
- javascript控件之实现滚动条触底加载数据
- Winform控件之DataGridView数据控件显示问题
- winform中打印datagridview中的数据无须制作报表
- winform datagridview 数据类型为数值类型时,如何去掉默认中“0”
- 一个简单的例子演示:模仿微博里面的通过浏览器的滚动条来动态加载数据
- winform 给文本框加载内容的时候 始终让文本框的滚动条到底(允许显示多行Multiline=True)
- 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据
- jQuery实现当拉动滚动条到底部加载数据
- WinForm控件设计:DataGridView导出数据
- winform 绑定数据 dataGridView
- js实现滚动条边滚动边加载数据