تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging )
#1
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 StringByVal 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 textint 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;
         }
      }
 } 
قمنا بتعريف كلاس خاص سنستخدمه لنسب قيمة أخرى غير القيمة الأساسية التي سنعين من خلالها مقدار السجلات والمتبقي منها Smile
-----------------
وبعد أن نقوم بعمل شاشة مصغرة تشبه هذه الصورة :









نقوم بتعريف كود الاتصال بقاعدة البيانات و بعض المتغيرات التي سنستخدمها على مجال الفورم ككل

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 IntegerAs 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#
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()
         
= (Convert.ToInt32(cmd.ExecuteScalar()))
         
con.Close()
 
         
Dim z As Integer max
         y 
x Mod max
         
If <> 0 Then
             z 
+= 1
         End 
If
 
         For 
1 To z
             ComboBox1
.Items.Add(New listitem(rmax max))
         
Next
 
         ComboBox1
.SelectedIndex 
C#

PHP كود :
OleDbCommand cmd = new OleDbCommand("select count(*) from orders"con);
             if (
con.State == ConnectionState.Open)
             {
                 
con.Close();
             }
             
con.Open();
             
= (Convert.ToInt32(cmd.ExecuteScalar()));
             
con.Close();
 
              
int z max;
              
max ;
             if (
!= 0)
             {
                 
z++;
             }
           
             
             for (
1<= zx++)
             {
                 
comboBox1.Items.Add(new listitem(Convert.ToString(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.SelectedItemlistitem).valuemaxdt)
         
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).valuemaxdt);
             
con.Close();
             
dataGridView1.DataSource dt

---------
وبعد أن تقوم بعمل Run المشروع سيظهر لك الشكل التالي











يوجد في المرفقات نفس المثال ,, على الطريقتين (VB.NET & C Sharp)

لاتنسوني من دعائكم ,,

م.لؤي
الرد }}}}
تم الشكر بواسطة: mbk2006
#2
ممتاز جدا ومشكورر
فعلاّ موضوع متميز
ولكن اين المرفقات
الرد }}}}
تم الشكر بواسطة:
#3
مشششششششششششششششكور
الرد }}}}
تم الشكر بواسطة:
#4
(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 StringByVal 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 textint 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;
 
        }
 
     }
 } 
قمنا بتعريف كلاس خاص سنستخدمه لنسب قيمة أخرى غير القيمة الأساسية التي سنعين من خلالها مقدار السجلات والمتبقي منها Smile
-----------------
وبعد أن نقوم بعمل شاشة مصغرة تشبه هذه الصورة :










نقوم بتعريف كود الاتصال بقاعدة البيانات و بعض المتغيرات التي سنستخدمها على مجال الفورم ككل

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 IntegerAs 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#

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 max
         y 
x Mod max
         
If <> 0 Then
             z 
+= 1
         End 
If
 
 
        For 1 To z
             ComboBox1
.Items.Add(New listitem(rmax max))
 
        Next
 
         ComboBox1
.SelectedIndex 
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 max;
 
             y max ;
 
            if (!= 0)
 
            {
 
                z++;
 
            }
 
          
             
             
for (1<= zx++)
 
            {
 
                comboBox1.Items.Add(new listitem(Convert.ToString(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.SelectedItemlistitem).valuemaxdt)
 
        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).valuemaxdt);
 
            con.Close();
 
            dataGridView1.DataSource dt

---------
وبعد أن تقوم بعمل Run المشروع سيظهر لك الشكل التالي












يوجد في المرفقات نفس المثال ,, على الطريقتين (VB.NET & C Sharp)

لاتنسوني من دعائكم ,,

م.لؤي

مششششششششششششششششششكور
الرد }}}}
تم الشكر بواسطة:
#5
شكرا .
(( نحن قوم أعزنا الله بالإسلام فمهما ابتغينا العزة بغيره أذلنا الله )) .. 











الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Big Grin وداعا لملل كتابة الاكود الاضافة لقاعدة البيانات اكسس و سيكوال alims 14 4,881 10-09-16, 11:30 AM
آخر رد: assad
  كيفية تحزيم برنامج وتضمين معه قاعدة البيانات شرح بالصور مبرمج بلا حدود 30 14,668 20-07-16, 06:58 PM
آخر رد: ahmedfa71
Wink [مقال] وداعا لملل كتابة الاكود لعرض لقاعدة البيانات اكسس و سيكوال (الجزء الثانى) alims 1 1,014 02-06-16, 12:42 PM
آخر رد: CLARO
  وداعا لملل كتابة الاكود الاضافة لقاعدة البيانات اكسس و سيكوال alimse 3 1,561 02-06-16, 12:41 PM
آخر رد: CLARO
Lightbulb [نقاش] تحليل وتصميم قواعد البيانات ahmed saba 3 2,373 02-06-16, 12:39 PM
آخر رد: CLARO
  موقع ConnectionStrings الغني عن التعريف المليء باوامر الاتصال لقواعد البيانات وغبرها honest 1 220 02-06-16, 12:38 PM
آخر رد: CLARO
  الكامل في قواعد البيانات rinawi 13 5,075 02-06-16, 12:37 PM
آخر رد: CLARO
  مثال للعمليات علي قواعد البيانات مع الشرح mr_mgm 1 1,138 02-06-16, 12:34 PM
آخر رد: CLARO
  اسهل طريقة للتعامل مع MS Access تحت بيئة الدوت نت eng.khalidvb 3 1,266 26-08-13, 09:25 PM
آخر رد: Omar Mekkawy
  طريقة عمل النسخ الإحتياطى و إسترجاع البيانات بكل سهوولة MR Dev Boody 1 2,275 14-12-12, 11:36 AM
آخر رد: abdoawad

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم