منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تصفية داتا جريد
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
عندي نموذج به داتا جريد و به حدث selection change يعمل الصورة جيدة و كذلك يوجد اداة تصفية الصفوف طبقا للتاريخ 
او الاسم او الوظيفة 
عند تشغيل اداوات التصفية لا يستجيب الحدث selection change 
ارجو الافادة
الصف المحدد لا يتغير عند فرز الأعمدة
على سبيل المثال إذا كانت لديك dataGridView بها 4 صفوف Rows وقمت بتحديد الصف الثالث ثم ضغطت على رأس العمود column header لفرز الصفوف حسب قيمة خلايا هذا العمود
فإن الاختيار لن يتغير من الصف الثالث الذي اخترته على الرغم من أن بيانات الصف قد تغيرت
فالإختيار هنا يتم على رقم الصف في الأداة index وليس على محتوى خلايا الصف

لهذا عليك أولا أن تميز هذا الصف وتخزن قيمة خاصة به في متغير نصي قبل اتمام عملية الفرز

مثال اذا كانت عملية الفرز عندك تعتمد على الضغط على راس العمود:
كود :
void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
   if (e.RowIndex == -1)
   {
       selected = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
   }
}
هنا خزنت قمية الخلية الاولى من السطر المحدد في متغير selected - عليك اختيار قيمة لا تتكرر في باقي الصفوف مثل رقم متسلسل او اسم
لاحظ ان شرط التنفيذ هو ان يكون العمود المضغوط رقمه -1 وهو رقم خلية راس العمود

الان تحتاج الى استخدام حدث sorted الذي ينفذ بعد الفرز
بحيث ستغير الصف المحدد الى الصف الذي يطابق محتوى الخلية المحددة قيمة المتغير selected
وبعدها سينفذ تلقائيا حدث selection_changed

هذا رابط المصدر ولو انه مرتبط ب SortableBindingList
http://stackoverflow.com/questions/48195...pplication
(18-12-16, 01:56 AM)محمد كريّم كتب : [ -> ]الصف المحدد لا يتغير عند فرز الأعمدة
على سبيل المثال إذا كانت لديك dataGridView بها 4 صفوف Rows وقمت بتحديد الصف الثالث ثم ضغطت على رأس العمود column header لفرز الصفوف حسب قيمة خلايا هذا العمود
فإن الاختيار لن يتغير من الصف الثالث الذي اخترته على الرغم من أن بيانات الصف قد تغيرت
فالإختيار هنا يتم على رقم الصف في الأداة index وليس على محتوى خلايا الصف

لهذا عليك أولا أن تميز هذا الصف وتخزن قيمة خاصة به في متغير نصي قبل اتمام عملية الفرز

مثال اذا كانت عملية الفرز عندك تعتمد على الضغط على راس العمود:
كود :
void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
   if (e.RowIndex == -1)
   {
       selected = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
   }
}
هنا خزنت قمية الخلية الاولى من السطر المحدد في متغير selected - عليك اختيار قيمة لا تتكرر في باقي الصفوف مثل رقم متسلسل او اسم
لاحظ ان شرط التنفيذ هو ان يكون العمود المضغوط رقمه -1 وهو رقم خلية راس العمود

الان تحتاج الى استخدام حدث sorted الذي ينفذ بعد الفرز
بحيث ستغير الصف المحدد الى الصف الذي يطابق محتوى الخلية المحددة قيمة المتغير selected
وبعدها سينفذ تلقائيا حدث selection_changed

هذا رابط المصدر ولو انه مرتبط ب SortableBindingList
http://stackoverflow.com/questions/48195...pplication

شكرا
هذا موضوع قديم موجود في المنتدى ولكن لم استطيع تطبيقه على مشروعي
من خلال الكود المذكور علما انه الكود الذي استخدمه في البحث هو
كود :
   Private Sub TextBox9_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox9.TextChanged
       Dim ba As New BindingSource
       ba.DataSource = DataGridView1.DataSource
       ba.Filter = DataGridView1.Columns("الموضوع").DataPropertyName & " like '%" & TextBox9.Text & "%'"
       DataGridView1.DataSource = ba
   End Sub

و الكود المستخدم في التحديد هو
كود :
   Private Sub DataGridView1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
       Dim te As String = BindingContext(dt).Position
       TextBox1.Text = dt.Rows(te).Item("التاريخ")
       TextBox2.Text = dt.Rows(te).Item("الجهة المرسلة")
       TextBox3.Text = dt.Rows(te).Item("الجهة المستلمة")
       TextBox4.Text = dt.Rows(te).Item("رقم الكتاب")
       TextBox5.Text = dt.Rows(te).Item("تاريخ الكتاب")
       TextBox6.Text = dt.Rows(te).Item("الموضوع")
       TextBox7.Text = dt.Rows(te).Item("الملاحظات")
       TextBox8.Text = dt.Rows(te).Item("تسلسل الاضبارة")
   End Sub
كود :
Dim te As String = BindingContext(dt).Position
الـPosition رقمي وليس نصي عرفه كـ Integer وليس String.
شكرا لك اخي لكن هل من الممكن التعديل على الكودات المذكورة
مع الشكر الجزيل
(29-04-18, 03:20 PM)رسول555 كتب : [ -> ]شكرا لك اخي لكن هل من الممكن التعديل على الكودات المذكورة
مع الشكر الجزيل

العفو ... لكن حسب الكود لم ار خطا سوى ما كتبته بمشاركتي  السابقة.

ملاحظة! 
            اذا ربطت كل الادوات بمصدر واحد لن تحتاج لاكواد الاسناد الموجودة بالكود.
لم تحل المشكلة عندما اقوم بالتصفية يتوقف خاصية selection change
(30-04-18, 01:55 AM)رسول555 كتب : [ -> ]لم تحل المشكلة عندما اقوم بالتصفية يتوقف خاصية selection change
 ؟؟؟؟؟؟؟؟؟؟؟؟؟؟