طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) - MR Dev Boody - 20-09-12
lo2i
السلام عليكم ورحمة لله وبركاته ,,
سنتحدث في هذا الدرس عن كيفية تقسيم البيانات لعرضها داخل أداة DataGridView ,, وهذه الطريقة تستخدم في البرامج الضخمة التي يحتمل أن يصل عدد السجلات التي ستسدعى من خلال الإستعلام إلى مئات الالاف .
في هذه الحالة بالفعل لن تقوم بعرض مئات الألاف مرة واحدة في الاداة DataGridView
لهذا قمت بعمل كود يعتمد على هذه الفكرة وقمت بإستخدام الفكرة الموضوعة في موضوعي هنا لأنشاء قائمة ListItem
تعلم إنشاء قائمة ListItem خاصة بك ,, ماهي ؟ و ماخصائصها ؟ و مافوائدها ؟
بداية نقوم بإنشاء قاعدة بيانات اكسيس كمثال سريع للتجربة عليه ونقوم بإنشاء جدول وحيد بإسم Orders وننشى فيه الحقول المبينة في الصورة التالية
ومن ثم نقوم بإختيار اللغة التي سنعمل عليها التطبيق.
ومن ثم نقوم بإنشاء كلاس Class ونقوم بتسميته بـ ListItem
VB.NET
PHP كود :
Public Class listitem Private _text As String = String.Empty Private _value As Integer Public Sub New(ByVal text As String, ByVal value As Integer) _text = text _value = value End Sub Public Property text() As String Get Return _text End Get Set(ByVal value As String) _text = value End Set End Property Public Property value() As Integer Get Return _value End Get Set(ByVal value As Integer) _value = value End Set End Property Public Overrides Function ToString() As String Return _text End Function End Class
C#
PHP كود :
namespace C_Sharp_Paging___Example_ { class listitem { private string _text = string.Empty; private int _value; public listitem(string text, int value) { _text = text; _value = value; } public string text { get { return _text; } set { _text = value; } } public int value { get { return _value; } set { _value = value; } } public override string ToString() { return _text; } } }
قمنا بتعريف كلاس خاص سنستخدمه لنسب قيمة أخرى غير القيمة الأساسية التي سنعين من خلالها مقدار السجلات والمتبقي منها
-----------------
وبعد أن نقوم بعمل شاشة مصغرة تشبه هذه الصورة :
نقوم بتعريف كود الاتصال بقاعدة البيانات و بعض المتغيرات التي سنستخدمها على مجال الفورم ككل
VB.NET
PHP كود :
Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath & "\db.accdb;Persist Security Info=False;") Dim max As Integer = 10 Dim x As Integer, y As Integer
C#
PHP كود :
OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + @"\db.accdb;Persist Security Info=False;"); int max = 10; int x,y;
كما نقوم ايضاً بإضافة فضاء الاسماء الذي يتيح لنا التعامل مع محرك الاكسيس
VB.NET
PHP كود :
Imports System.Data.OleDb
C#
-----------
وفي حدث الـ Form_Load
VB.NET
PHP كود :
Dim cmd As New OleDbCommand("select count(*) from orders", con) If con.State = ConnectionState.Open Then con.Close() End If con.Open() x = (Convert.ToInt32(cmd.ExecuteScalar())) con.Close() Dim z As Integer = x / max y = x Mod max If y <> 0 Then z += 1 End If For r = 1 To z ComboBox1.Items.Add(New listitem(r, r * max - max)) Next ComboBox1.SelectedIndex = 0
C#
PHP كود :
OleDbCommand cmd = new OleDbCommand("select count(*) from orders", con); if (con.State == ConnectionState.Open) { con.Close(); } con.Open(); x = (Convert.ToInt32(cmd.ExecuteScalar())); con.Close(); int z = x / max; y = x % max ; if (y != 0) { z++; } for (x = 1; x <= z; x++) { comboBox1.Items.Add(new listitem(Convert.ToString(x), x * max - max)); } comboBox1.SelectedIndex=0;
---------------
وفي حدث الـ ComboBox1_SelectedIndexChanged نقوم بكتابة الكود التالي :
VB.NET
PHP كود :
Dim da As New OleDbDataAdapter("select * from orders order by id", con) Dim dt As New DataTable() dt.Clear() con.Open() da.Fill(DirectCast(ComboBox1.SelectedItem, listitem).value, max, dt) con.Close() DataGridView1.DataSource = dt
C#
PHP كود :
OleDbDataAdapter da = new OleDbDataAdapter("select * from orders order by id", con); DataTable dt = new DataTable(); dt.Clear(); con.Open(); da.Fill(((listitem)comboBox1.SelectedItem).value, max, dt); con.Close(); dataGridView1.DataSource = dt;
---------
وبعد أن تقوم بعمل Run المشروع سيظهر لك الشكل التالي
يوجد في المرفقات نفس المثال ,, على الطريقتين (VB.NET & C Sharp)
لاتنسوني من دعائكم ,,
م.لؤي
طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) - learning.net - 18-11-12
ممتاز جدا ومشكورر
فعلاّ موضوع متميز
ولكن اين المرفقات
RE: طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) - mbk2006 - 07-06-15
مشششششششششششششششكور
RE: طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) - mbk2006 - 16-08-15
(20-09-12, 04:01 AM)MR Dev Boody كتب : lo2i
السلام عليكم ورحمة لله وبركاته ,,
سنتحدث في هذا الدرس عن كيفية تقسيم البيانات لعرضها داخل أداة DataGridView ,, وهذه الطريقة تستخدم في البرامج الضخمة التي يحتمل أن يصل عدد السجلات التي ستسدعى من خلال الإستعلام إلى مئات الالاف .
في هذه الحالة بالفعل لن تقوم بعرض مئات الألاف مرة واحدة في الاداة DataGridView
لهذا قمت بعمل كود يعتمد على هذه الفكرة وقمت بإستخدام الفكرة الموضوعة في موضوعي هنا لأنشاء قائمة ListItem
تعلم إنشاء قائمة ListItem خاصة بك ,, ماهي ؟ و ماخصائصها ؟ و مافوائدها ؟
بداية نقوم بإنشاء قاعدة بيانات اكسيس كمثال سريع للتجربة عليه ونقوم بإنشاء جدول وحيد بإسم Orders وننشى فيه الحقول المبينة في الصورة التالية
ومن ثم نقوم بإختيار اللغة التي سنعمل عليها التطبيق.
ومن ثم نقوم بإنشاء كلاس Class ونقوم بتسميته بـ ListItem
VB.NET
PHP كود :
Public Class listitem Private _text As String = String.Empty Private _value As Integer Public Sub New(ByVal text As String, ByVal value As Integer) _text = text _value = value End Sub Public Property text() As String Get Return _text End Get Set(ByVal value As String) _text = value End Set End Property Public Property value() As Integer Get Return _value End Get Set(ByVal value As Integer) _value = value End Set End Property Public Overrides Function ToString() As String Return _text End Function End Class
C#
PHP كود :
namespace C_Sharp_Paging___Example_ { class listitem { private string _text = string.Empty; private int _value; public listitem(string text, int value) { _text = text; _value = value; } public string text { get { return _text; } set { _text = value; } } public int value { get { return _value; } set { _value = value; } } public override string ToString() { return _text; } } }
قمنا بتعريف كلاس خاص سنستخدمه لنسب قيمة أخرى غير القيمة الأساسية التي سنعين من خلالها مقدار السجلات والمتبقي منها
-----------------
وبعد أن نقوم بعمل شاشة مصغرة تشبه هذه الصورة :
نقوم بتعريف كود الاتصال بقاعدة البيانات و بعض المتغيرات التي سنستخدمها على مجال الفورم ككل
VB.NET
PHP كود :
Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath & "\db.accdb;Persist Security Info=False;") Dim max As Integer = 10 Dim x As Integer, y As Integer
C#
PHP كود :
OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + @"\db.accdb;Persist Security Info=False;"); int max = 10; int x,y;
كما نقوم ايضاً بإضافة فضاء الاسماء الذي يتيح لنا التعامل مع محرك الاكسيس
VB.NET
PHP كود :
Imports System.Data.OleDb
C#
-----------
وفي حدث الـ Form_Load
VB.NET
PHP كود :
Dim cmd As New OleDbCommand("select count(*) from orders", con) If con.State = ConnectionState.Open Then con.Close() End If con.Open() x = (Convert.ToInt32(cmd.ExecuteScalar())) con.Close() Dim z As Integer = x / max y = x Mod max If y <> 0 Then z += 1 End If For r = 1 To z ComboBox1.Items.Add(New listitem(r, r * max - max)) Next ComboBox1.SelectedIndex = 0
C#
PHP كود :
OleDbCommand cmd = new OleDbCommand("select count(*) from orders", con); if (con.State == ConnectionState.Open) { con.Close(); } con.Open(); x = (Convert.ToInt32(cmd.ExecuteScalar())); con.Close(); int z = x / max; y = x % max ; if (y != 0) { z++; } for (x = 1; x <= z; x++) { comboBox1.Items.Add(new listitem(Convert.ToString(x), x * max - max)); } comboBox1.SelectedIndex=0;
---------------
وفي حدث الـ ComboBox1_SelectedIndexChanged نقوم بكتابة الكود التالي :
VB.NET
PHP كود :
Dim da As New OleDbDataAdapter("select * from orders order by id", con) Dim dt As New DataTable() dt.Clear() con.Open() da.Fill(DirectCast(ComboBox1.SelectedItem, listitem).value, max, dt) con.Close() DataGridView1.DataSource = dt
C#
PHP كود :
OleDbDataAdapter da = new OleDbDataAdapter("select * from orders order by id", con); DataTable dt = new DataTable(); dt.Clear(); con.Open(); da.Fill(((listitem)comboBox1.SelectedItem).value, max, dt); con.Close(); dataGridView1.DataSource = dt;
---------
وبعد أن تقوم بعمل Run المشروع سيظهر لك الشكل التالي
يوجد في المرفقات نفس المثال ,, على الطريقتين (VB.NET & C Sharp)
لاتنسوني من دعائكم ,,
م.لؤي
مششششششششششششششششششكور
RE: طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) - CLARO - 02-06-16
شكرا .
|