20-09-12, 04:01 AM
lo2i
سنتحدث في هذا الدرس عن كيفية تقسيم البيانات لعرضها داخل أداة DataGridView ,, وهذه الطريقة تستخدم في البرامج الضخمة التي يحتمل أن يصل عدد السجلات التي ستسدعى من خلال الإستعلام إلى مئات الالاف .
في هذه الحالة بالفعل لن تقوم بعرض مئات الألاف مرة واحدة في الاداة DataGridView
لهذا قمت بعمل كود يعتمد على هذه الفكرة وقمت بإستخدام الفكرة الموضوعة في موضوعي هنا لأنشاء قائمة ListItem
تعلم إنشاء قائمة ListItem خاصة بك ,, ماهي ؟ و ماخصائصها ؟ و مافوائدها ؟
بداية نقوم بإنشاء قاعدة بيانات اكسيس كمثال سريع للتجربة عليه ونقوم بإنشاء جدول وحيد بإسم Orders وننشى فيه الحقول المبينة في الصورة التالية
ومن ثم نقوم بإختيار اللغة التي سنعمل عليها التطبيق.
ومن ثم نقوم بإنشاء كلاس Class ونقوم بتسميته بـ ListItem
VB.NET
C#
-----------------
وبعد أن نقوم بعمل شاشة مصغرة تشبه هذه الصورة :
نقوم بتعريف كود الاتصال بقاعدة البيانات و بعض المتغيرات التي سنستخدمها على مجال الفورم ككل
VB.NET
كما نقوم ايضاً بإضافة فضاء الاسماء الذي يتيح لنا التعامل مع محرك الاكسيس
VB.NET
C#
-----------
وفي حدث الـ Form_Load
VB.NET
وفي حدث الـ ComboBox1_SelectedIndexChanged نقوم بكتابة الكود التالي :
VB.NET
C#
---------
وبعد أن تقوم بعمل Run المشروع سيظهر لك الشكل التالي
يوجد في المرفقات نفس المثال ,, على الطريقتين (VB.NET & C Sharp)
لاتنسوني من دعائكم ,,
م.لؤي
السلام عليكم ورحمة لله وبركاته ,,
سنتحدث في هذا الدرس عن كيفية تقسيم البيانات لعرضها داخل أداة 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
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
PHP كود :
using System.Data.OleDb;
وفي حدث الـ 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;
---------------
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
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)
لاتنسوني من دعائكم ,,
م.لؤي