بارگذاری داده ها توسط scroll در #C

یکشنبه 8 شهریور 1394

در این مقاله با یک مثال، بارگذاری داده ها را در پیمایش به سمت پایین صفحه نشان می دهیم.

بارگذاری داده ها  توسط scroll در #C

گام اول:
ابتدا یک جدول مانند زیر در دیتابیس خود ایجاد می کنیم.

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();  
            }       
        }  
    }  


حال پروژه را اجرا می کنیم، همان طور که مشاهده می کنید با پیمایش صفحه به سمت پایین، داده ها بارگذاری می شوند.

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 3 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید