منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم مقالات قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=42)
+--- الموضوع : طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) (/showthread.php?tid=4216)



طريقة تقسيم كمية عرض البيانات داخل الأداة ( 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 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)

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

م.لؤي



طريقة تقسيم كمية عرض البيانات داخل الأداة ( 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 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)

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

م.لؤي

مششششششششششششششششششكور


RE: طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) - CLARO - 02-06-16

شكرا .