آموزش اسکرول Scroll کردن گریدویو GridView در فرم سی شارپ C#.Net
آموزش اسکرول Scroll کردن گریدویو GridView در فرم سی شارپ C#.Net
در این پست میخواهیم Scroll کردن GridView را روی فرم به زبان سی شارپ آموزش دهیم.
درمواقعی که اطلاعات انبوهی داریم روش های مختلفی برای نمایش دادن اطلاعات بروی فرم هست.یکی از این روش ها اسکرول کردن فرم مورد نظر می باشد.امروز چگونگی اسکرول کردن گریدویو را روی فرم آموزش خواهیم داد.
ابتدا یک پروژه روی ویژوال استادیو ایجاد می کنیم و زبان آن را سی شارپ و از نوع فرم انتخاب میکنیم.
روی پروژه ابتدا یک فرم اضافه و داخل آن یک گریدویو اضافه می کنیم.
در ادامه یک جدول روی پایگاه به صورت زیر طراحی می کنیم .
حالا نیاز هست تا گریدویو را متصل به پایگاه و کوئری لازم جهت فراخوانی داده ها و اسکرول شدن را کدنویسی کنیم پس ابتدا از جزئیات گریدویو قسمت SelectionChanged را انتخاب و کد زیر را برای آن قرار می دهیم.
private void dataGridView1_SelectionChanged(object sender, EventArgs e) { dataGridView1.ClearSelection(); }
در ابتدا صفحه کلاس های زیر را فراخوانی میکنیم.
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;
حالا پایگاه داده را به پروژه اضافه می نماییم به صورت زیر
SqlConnection con = new SqlConnection("data source=.;initial catalog=example;integrated security=true;"); 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++; } } }
به همین سادگی الان روی فرم خود گریدویو را اسکرول کریم و هراندازه که داده موجود باشد آنها را می توانیم بدون مشکل روی فرم به نمایش بگذاریم.
نتیجه حاصل از کار:
نظر / سوال