بارگذاری داده ها توسط scroll در #C
یکشنبه 8 شهریور 1394در این مقاله با یک مثال، بارگذاری داده ها را در پیمایش به سمت پایین صفحه نشان می دهیم.
گام اول:
ابتدا یک جدول مانند زیر در دیتابیس خود ایجاد می کنیم.
CREATE TABLE Table1 ( id int identity(1,1), Column1 int, Column2 int )
گام دوم:
حال داده ها را در جدول قرار می دهیم. (برای فهم بهتر کارکرد برنامه آن را از اعداد 1 تا 60 پر کردیم)
گام سوم:
یک Windows Form Application می سازیم و یک DataGridView به فرم اضافه می کنیم.
به قسمت properties مربوط به form رفته و در بخش رویدادها روی رویداد Load رفته و آن را انتخاب می کنیم.

سپس به properties مربوط به DataGridView رفته و در بخش رویدادها، رویداد scroll و SelectionChanged را انتخاب می کنیم.

در ادامه نحوه پیاده سازی و مدیریت این رویدادها را خواهیم گفت.
گام چهارم:
کد مربوط به فرم و رویدادهای گفته شده به شکل زیر می باشد:
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.Data.SqlClient;
namespace LoadGridView
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection("data source=.;initial catalog=example;User ID=sa;Password=123;;");
DataTable dt = new DataTable();
DataSet ds;
BindingSource bi = new BindingSource();
SqlDataAdapter da;
int pageIndex = 1;
int PageSize = 20;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
LoadGridView();
}
private void LoadGridView()
{
string str = "select * from Table1 where id between "+pageIndex+" and "+PageSize;
da = new SqlDataAdapter(str,con);
ds = new DataSet();
da.Fill(ds);
dt = ds.Tables[0];
bi.DataSource = dt;
dataGridView1.DataSource = bi;
dataGridView1.ClearSelection();
}
private int GetDisplayedRowsCount()
{
int count = dataGridView1.Rows[dataGridView1.FirstDisplayedScrollingRowIndex].Height;
count = dataGridView1.Height / count;
return count;
}
private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
int display = dataGridView1.Rows.Count - dataGridView1.DisplayedRowCount(false);
if (e.Type == ScrollEventType.SmallIncrement || e.Type == ScrollEventType.LargeIncrement)
{
if (e.NewValue >= dataGridView1.Rows.Count - GetDisplayedRowsCount())
{
string str = "select * from Table1 where id between " + ((pageIndex * PageSize) + 1) + " and " + ((pageIndex + 1) * PageSize);
da = new SqlDataAdapter(str, con);
ds = new DataSet();
da.Fill(ds);
dt.Merge(ds.Tables[0]);
bi.DataSource = dt;
dataGridView1.ClearSelection();
dataGridView1.FirstDisplayedScrollingRowIndex = display;
pageIndex++;
}
}
}
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
dataGridView1.ClearSelection();
}
}
}
حال پروژه را اجرا می کنیم، همان طور که مشاهده می کنید با پیمایش صفحه به سمت پایین، داده ها بارگذاری می شوند.



- C#.net
- 2k بازدید
- 3 تشکر