PDA

View Full Version : پیشنهاد در مورد فیلتر کردن datagridview



harani
سه شنبه 22 مرداد 1392, 16:28 عصر
با سلام خدمت دوستان من یک datagridview دارم که متصل به دیتابیش است و شامل 3 ستون ردیف , تاریخ (که بصورت روز/ماه/سال هستش) , شرح رویداد می باشد فرم من یک بخش برای فیلتر کردن داده های دیتاگرید ویو داره (ولی با نوشتن کدش مشکل دارم) این بخش شامل 4 تکست باکس سال و ماه و روز و شرح می باشد.

میخوام کاربر اگه هر تعداد فیلدی را پر کرد تنها همان عناصر در گرید ویو نشون داده شود .به عنوان مثال :
گرید ویو ی من به شکل زیر است .

ردیف تاریخ شرح

1 1392/5/22 a
2 1392/5/22 b
3 1392/5/22 c
4 1392/5/22 c
5 1392/4/22 a
6 1392/4/22 c
7 1392/4/22 b

چیزی که از بخش فیلتر میخوام بصورت زیر است .
txtyear.Text = "";//b
txtmonth.Text ="";//a
txtday.Text = "22";//c ========> نمایش 4 ردیف اول در گرید و حذف ردیفهای دیگر
txtdescription.Text = "";//s

یا

txtyear.Text = "";//b
txtmonth.Text ="5";//a
txtday.Text = "22";//c =======> نمایش ردیف 3و 4 در گرید و حذف ردیفهای دیگر
txtdescription.Text = "c";//s


و به همین شکل , مطمئناً میتوان با if/else های زیاد اینکارو حل کرد ولی من دنبال راه حل بهترم لطفاً راهنمایی کنید . با سپاس از تمامی دوستان

massoudghb
سه شنبه 22 مرداد 1392, 16:36 عصر
منظورتون رو خوب نفهمیدم ،​اما روش استاندارد برای فیلترینگ این هست که شما ،​ تاریخ مورد نظرتون رو بگیرید ، بعد دیتا تون رو بگیرید ،​ دیتا رو فیلتر کنید بر اساس تاریختون .. و در پایان دیتای فیلتر شده رو به دیتاگریدتون وصل کنید ..

harani
سه شنبه 22 مرداد 1392, 19:47 عصر
من منظور دوستمونو متوجه نشدم ولی اگه من منظورمو درست نگفتم اصلاح میکنم :

ببینید مثلاً من یک گرید ویو دارم به این شکل :



109020

حالا من توسط فیلدهای زیر چطوری میتونم گریدویو ی خودمو فیلتر کنم لطفاً راهنمایی نمائید .


109021

Mahmoud.Afrad
سه شنبه 22 مرداد 1392, 20:29 عصر
سوالت خیلی تکراریه. یه جستجو میکردی.


جستجو در دیتاتیبل
فیلتر دیتاتیبل (http://barnamenevis.org/showthread.php?375223-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%A7%D8%B2-%DA%86%D9%86%D8%AF-%D9%81%DB%8C%D9%84%D8%AF&p=1657889&viewfull=1#post1657889)

جستجو در دیتابیس:
نمونه کد جستجوی پیشرفته (http://barnamenevis.org/showthread.php?343579-%D9%86%D9%85%D9%88%D9%86%D9%87-%DA%A9%D8%AF-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87)
آموزش انجام جستجوی پیشرفته توسط استورپروسیجر stored procedure (http://barnamenevis.org/showthread.php?340305-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D8%AA%D9%88%D8%B3%D8%B7-%D8%A7%D8%B3%D8%AA%D9%88%D8%B1%D9%BE%D8%B1%D9%88%D 8%B3%DB%8C%D8%AC%D8%B1-stored-procedure)

LINQ:
جستجوی پیشرفته در Entity FrameWork (مقایسه جستجو در دیتابیس و فیلتر اطلاعات از قبل لود شده) (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1565318&viewfull=1#post1565318)

amir_pro
سه شنبه 22 مرداد 1392, 22:09 عصر
ببین دوست عزیز بهترین کار و اصولی ترین کار اینه که فیلد تاریخ تو sql به صورت datetime باشه و تاریخم به صورت میلادی ذخیره کنی و بعدش به صورت شمسی نشون بدی. برای فیلتر کردن تاریخم از کامپوننت radgridview استفاده کنی و از خاصیت فیلترش استفاده کنی. اصولی ترین راهش اینه

vesall
دوشنبه 26 اسفند 1392, 23:20 عصر
سلام.
فکر کنم اگر اینجا بپرسم بهتر از اینه که تاپیک جدید ایجاد کنم ( ؟ )

منیه گرید ویوو دارم که اینطوری اونو فیلتر کردم ( چون باید در یک زمان چندین مورد توی اون فیلتر بشه )( مثل فرستنده، گیرنده، کامیون و تاریخ ) و مشکل من با قسمت فرمت بر اساس تاریخ هست.
چطوری تاریخی مابین دو تاریخ رو فیلتر کنم طوری که فیلتر های قبلی رو منق نکنه !؟

کد الان من:
var db = new LINQDataContext(); db = new LINQDataContext();
dataGridView1.DataSource = db.tbsherkats;

dataGridView1.DataSource = db.tbbarnames.Where(c =>
(c.kodsherkat.Substring(0, txtsherkat2.Text.Length) == txtsherkat2.Text)
/*&& (c.tarikh.Substring(0, txtstartdate.Text.Length) == txtstartdate.Text)*/
&& (c.noekamion.Substring(0, cmbkamion.Text.Length) == cmbkamion.Text)
&& (c.noebastebandi.Substring(0, cmbbastebandi.Text.Length) == cmbbastebandi.Text)
&& (c.shlenj.Substring(0, cmdshlenj.Text.Length) == cmdshlenj.Text)
&& (c.noejens.Substring(0, cmbjens.Text.Length) == cmbjens.Text)
).Select(c => c);