تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سلوك غير متعارف عليه تقوم به الـ GridControl
#1
السلام عليكم ورحمة الله


ملاحظة وسلوك غير معهود مع ادوات لغات البرمجة وهو عندما تقوم بتعبئة الـ DataSet بالبيانات وتربطها بالـ GrideControl تم تقوم بعرضها تعرض مثلا 200 سجل الموجودة بقاعدة البيانات
بعدها اذا قمت بفلترة البيانات عن طريق الاداة GrideControl ومن الـ 200 اصبحت تعرض لنقل 50 فقط
الان اذا قمت بربط التقرير بمصدر البيانات فانه سوف يعرض الـ 200 سجل مما يوحي ان الاداة GrideControl لا تقوم حقيقة بفلترة البيانات وانما تقوم فقط باخفاء البيانات
هل هذا فعلا ما يحدث ام انا مخطئ
وهل هناك طريقة لاجبارها على فلترة البيانات حتى في الـ DataSet
وشكرا لكم
الرد }}}
تم الشكر بواسطة:
#2
(04-05-23, 12:43 AM)ابو محمد محمد محمد كتب : السلام عليكم ورحمة الله


ملاحظة وسلوك غير معهود مع ادوات لغات البرمجة وهو عندما تقوم بتعبئة الـ DataSet بالبيانات وتربطها بالـ GrideControl تم تقوم بعرضها تعرض مثلا 200 سجل الموجودة بقاعدة البيانات
بعدها اذا قمت بفلترة البيانات عن طريق الاداة GrideControl ومن الـ 200 اصبحت تعرض لنقل 50 فقط
الان اذا قمت بربط التقرير بمصدر البيانات فانه سوف يعرض الـ 200 سجل مما يوحي ان الاداة GrideControl لا تقوم حقيقة بفلترة البيانات وانما تقوم فقط باخفاء البيانات
هل هذا فعلا ما يحدث ام انا مخطئ
وهل هناك طريقة لاجبارها على فلترة البيانات حتى في الـ DataSet
وشكرا لكم

How to: Get Data Rows in a Filtered Grid
الرد }}}
تم الشكر بواسطة: ابو محمد محمد محمد
#3
شكرا

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

على العموم انا اعرف هذا المثال واستخدمه ولكن تواجهني مشكلة
اولا البيانات التي عندي (بالداتاسيت) احتاج لها الى بيانات فرعية من جدول اخر
يعني لنفرض ان البيانات التي فيها للموظفين وهنا قبل عرضها في التقرير احتاج الى اضافة بيانات اخرى مثل الصورة من جدول الصور والمستندات الخاصة بالموظف والاجازات وما الى ذلك
اين المشكلة ....؟
المشكلة سوف اعمل Loop لكل هذه الجداول واضيفها في الـ (داتاسيت) الحالية تم اقوم بعرضها
هل واجهتكم مشكلة كهذه وما الحل الأفضل من هذا
الرد }}}
تم الشكر بواسطة:
#4
(05-05-23, 10:53 PM)ابو محمد محمد محمد كتب : شكرا

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

على العموم انا اعرف هذا المثال واستخدمه ولكن تواجهني مشكلة
اولا البيانات التي عندي (بالداتاسيت) احتاج لها الى بيانات فرعية من جدول اخر
يعني لنفرض ان البيانات التي فيها للموظفين وهنا قبل عرضها في التقرير احتاج الى اضافة بيانات اخرى مثل الصورة من جدول الصور والمستندات الخاصة بالموظف والاجازات وما الى ذلك
اين المشكلة ....؟
المشكلة سوف اعمل Loop لكل هذه الجداول واضيفها في الـ (داتاسيت) الحالية تم اقوم بعرضها
هل واجهتكم مشكلة كهذه وما الحل الأفضل من هذا

ارفق المشروع
الرد }}}
تم الشكر بواسطة: ابو محمد محمد محمد
#5
شكرا و الموضوع بسيط لا يحتاج لمشروع وهذا كل الكود

كود :
 Dim ds As New DataSet
Dim dt As DataTable = DataSet1.Tables(0).Clone()
Dim SERIAL_NO As Integer

 Dim languages_table As New DataTable
Dim QUALIFICATION_TABLE As New DataTable
Dim REFRESH_TABLE As New DataTable
Dim PUNISHMENT_TABLE As New DataTable
Dim SIGN_TABLE As New DataTable


 For i As Integer = 0 To GridView1.DataRowCount - 1

           dt.ImportRow(GridView1.GetDataRow(i))
           SERIAL_NO = Convert.ToInt32(GridView1.GetDataRow(i).Item("SERIAL_NO"))


           da.SelectCommand.Parameters.Clear()
            da.SelectCommand.Parameters.Add("@SERIAL_NO", FbDbType.Integer).Value = SERIAL_NO  

            Try
                da.Fill(languages_table)
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally

            End Try

           da2.SelectCommand.Parameters.Clear()
            da2.SelectCommand.Parameters.Add("@SERIAL_NO", FbDbType.Integer).Value = SERIAL_NO  
            Try
                da2.Fill(QUALIFICATION_TABLE)
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally

            End Try

            da3.SelectCommand.Parameters.Clear()
            da3.SelectCommand.Parameters.Add("@SERIAL_NO", FbDbType.Integer).Value = SERIAL_NO  
            Try
                da3.Fill(REFRESH_TABLE)
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally

            End Try

            da4.SelectCommand.Parameters.Clear()
            da4.SelectCommand.Parameters.Add("@SERIAL_NO", FbDbType.Integer).Value = SERIAL_NO  
            Try
                da4.Fill(PUNISHMENT_TABLE)
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally

            End Try


 Next

        ds.Tables.Add(dt)
        ds.Tables.Add(languages_table)
        ds.Tables.Add(QUALIFICATION_TABLE)
        ds.Tables.Add(REFRESH_TABLE)
        ds.Tables.Add(PUNISHMENT_TABLE)
        ds.Tables.Add(SIGN_TABLE)

        ds.Relations.Clear()
        ds.Relations.Add("Relation1", dt.Columns("SERIAL_NO"), languages_table.Columns("SERIAL_NO"))
        ds.Relations.Add("Relation2", dt.Columns("SERIAL_NO"), QUALIFICATION_TABLE.Columns("SERIAL_NO"))
        ds.Relations.Add("Relation3", dt.Columns("SERIAL_NO"), REFRESH_TABLE.Columns("SERIAL_NO"))
        ds.Relations.Add("Relation4", dt.Columns("SERIAL_NO"), PUNISHMENT_TABLE.Columns("SERIAL_NO"))
        ds.Relations.Add("Relation5", dt.Columns("SERIAL_NO"), SIGN_TABLE.Columns("SERIAL_NO"))


ولكن الطريقة لا تعجبني مع انها تعمل اشعر انها ليست انسب شئ
الرد }}}
تم الشكر بواسطة:



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


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