منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] تصفية Filter تاريخين في datagridview - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41)
+--- الموضوع : [سؤال] تصفية Filter تاريخين في datagridview (/showthread.php?tid=26356)



تصفية Filter تاريخين في datagridview - عبد الله - 03-09-18

السلام عليكم

لدي datagridview وفيها عمودان
الأول بداية التاريخ date1
الثاني نهاية التاريخ data2

كيف اعمل تصفية Filter للمعلومات بناء على التاريخين ؟


RE: تصفية Filter تاريخين في datagridview - عابر سبيل 2 - 03-09-18

لم توضح كيف تم وضع البيانات في datagridview

ولم توضح نتيجة التصفية هل حذف الصفوف الغير مطابقة للفلتر أم ماذا

عموماً جرب هذا الكود
على افتراض تعبئة datagridview بطريقة يدوية
ونتيجة الفلتر هي بحذف الصفوف الغير مطابقة
PHP كود :
DateTime d1 Convert.ToDateTime("1/10/2018").Date;
DateTime d2 Convert.ToDateTime("1/22/2018").Date;
 
           
var rows dataGridView1.Rows.Cast<DataGridViewRow>()
 
   .Where(=> 
 
       d1.Date >= Convert.ToDateTime(x.Cells[0].Value).Date 
 
       d2.Date <= Convert.ToDateTime(x.Cells[1].Value).Date).ToArray();

dataGridView1.Rows.Clear();
dataGridView1.Rows.AddRange(rows); 



RE: تصفية Filter تاريخين في datagridview - عابر سبيل 2 - 03-09-18

وهذا الكود لو المقارنة بتاريخ واحد
PHP كود :
DateTime d Convert.ToDateTime("1/10/2018").Date;

var 
rows dataGridView1.Rows.Cast<DataGridViewRow>()
 
   .Where(=>
 
       d.Date >= Convert.ToDateTime(x.Cells[0].Value).Date &
 
       d.Date <= Convert.ToDateTime(x.Cells[1].Value).Date
        
).ToArray();

dataGridView1.Rows.Clear();
dataGridView1.Rows.AddRange(rows); 



RE: تصفية Filter تاريخين في datagridview - elgokr - 03-09-18

مرحباً اخى عبدالله

الطرق عديدة ساضع لك بعضها
يمكنك عمل فلتر عن طريق التالى
كود :
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Column1 >= #{0}# AND Column2 <= #{1}#", Convert.ToDateTime(textBox1.Text).Date, Convert.ToDateTime(textBox2.Text).Date);


كما يمكنك عمل عم طريق الكود التالى
كود :
           DataView dv = new DataView(dt);
           dv.RowFilter = "DateStart = #" + Convert.ToDateTime(textBox1.Text).Date + "# AND DateEnd = #" + Convert.ToDateTime(textBox1.Text).Date + "#";
           dv.RowStateFilter = DataViewRowState.ModifiedCurrent;
           dv.Sort = "Datum DESC";

           dataGridView1.DataSource = dv;
           dataGridView1.Refresh();


تحياتى لك
وتمنياتى لك التويق