PDA

View Full Version : جستجو در دیتا گرید



mohammad2407
دوشنبه 09 اردیبهشت 1392, 13:39 عصر
سلام دوستان عزیز من بر اساس فیلتری که دارم یک سری اطلاعات داخل دیتا گرید میریزم

حالا میخوام داخل دیتا گرید ویو جستجو کنم
من نمیخوام در بانک جستجو کنم میخوام در خوده دیتا گرید جستجو انجام بدم

و اگر رکورد مورد نظر منو پیدا کرد با یک رنگی نمایش برام بده

ممنون :لبخندساده:

mousa1992
دوشنبه 09 اردیبهشت 1392, 13:59 عصر
سلام

این مثالو ببین

foreach (DataGridViewRow row in dgvDays.Rows)
foreach (DataGridViewCell cell in row.Cells)
if (Convert.ToInt32(cell.Value) == 10)
cell.Style.BackColor = System.Drawing.Color.Blue;


موفق باشی

mohammad2407
سه شنبه 10 اردیبهشت 1392, 01:02 صبح
کدی که دادین عمل نمیکنه


foreach (DataGridViewRow row in dataGridView1.Rows)
foreach (DataGridViewCell cell in row.Cells)
if (Convert.ToString(cell.Value) == textBox4.Text)
{
// نمایش نتیجه
cell.Style.BackColor = System.Drawing.Color.Blue;
}
else
{
// پیغام خطا
}

mousa1992
سه شنبه 10 اردیبهشت 1392, 01:18 صبح
امکان نداره :بامزه:
سلام

کجای کار ایراد میگیره ؟ این کد رو کجای برنامه اضافه کردی؟

mohammad2407
سه شنبه 10 اردیبهشت 1392, 01:38 صبح
من یک دکمه دارم که به دیتا گرید رکورد اضافه میکنم حالا میخوام اول چک کنه که اگر اون رکورد وجود داره پیغام خطا بده و اگر وجود نداره تراکنش ثبت رکورد انجام بده

pajoohesh
سه شنبه 10 اردیبهشت 1392, 07:38 صبح
سلام دوست عزیز
لطفا کد به همراه پیغام خطا را بگذارید

mohammad2407
سه شنبه 10 اردیبهشت 1392, 18:57 عصر
دوست من خطا نمیده ، عمل نمیکنه

کد هم به صورت زیر هست


foreach (DataGridViewRow row in dataGridView1.Rows)
foreach (DataGridViewCell cell in row.Cells)
if (Convert.ToString(cell.Value) == textBox4.Text)
{
// نمایش نتیجه
cell.Style.BackColor = System.Drawing.Color.Blue;
}
else
{
// پیغام خطا
// ثبت رکورد بعدی

}

mousa1992
سه شنبه 10 اردیبهشت 1392, 19:06 عصر
شرط برقرار نمیشه
شما هنگام مقایسه دوتا رشته از هردو متد Trim , tolower استفاده کن ( البته اگر بزرگ و کوچیکی حروف براتون مهم نیس)

mohammad2407
چهارشنبه 11 اردیبهشت 1392, 15:29 عصر
تکس باکس ها رو Trim کردم مشکل حل شد

ولی الان تکراری هم ثبت میشه . یعنی کار اصلی انجام نمیده

الان textBox4 منو با چه فیلدی از دیتا گرید مقایسه میکنه ؟ چطور میتونم اون فیلد مشخص کنم

ZENDAR
دوشنبه 01 اردیبهشت 1393, 17:43 عصر
من کد بالا رو تو یک باتن میزارم و عبارت مورد نظر را تو تکست باکس 1 مینویسم وقتی پیدا میکنه آبی رنگ میکنه فقط مشکلش اینه که حتما باید عبارت برابر هم باشند چون از مساوی استفاده کردم .ولی وقتی از like استفاده میکنم خطا میگیره و در دستور آخر میخوام به جای سلول کل سطر را آبی رنگ کنه اگه کسی هست راهنمایی کنه ممنون میشم

رامین مرادی
سه شنبه 02 اردیبهشت 1393, 20:06 عصر
فکر کنم باید حالت انتخاب سطر رو توی پروپرتیز دیتا گرید به صورت فول سلکتیت :متفکر:بزاری .

HAMRAHSOFT.IR
دوشنبه 12 خرداد 1393, 10:18 صبح
سلام چه تغیر باید داخل کد بدم که اگه طرف قسمتی از یکی از فیلد ها اورد تمام مشابه هارا نیز پیدا کن وفیلتر کن

ZENDAR
پنج شنبه 11 دی 1393, 17:40 عصر
با سلام دوستان بلاخره با کمک دوستم مهندس زمانی یک جستجوی توپ نوشتیم که درواقع کامل شده جستجوی بالاست . روش کارش اینه که میاد متن تکس باکس را تو کل دیتا گرید ویو جستجو کرده و رنگی میکند که مشکلی که دارد بقیه سطرها رو هم نمایش میدهد که این مشکلو با قطعه کدی که نوشتیم حل کردیم . این قطعه کد میاد سطرهایی که رنگی نشدن رو حذف میکنه . امیدوارم به کارتون بیاد . درصورت مشکل ایمیل بزنید


M.AMADEH@KAYSON-IR.COM (M.AMADEH@KAYSON-IR.COM)





try
{


#region // جستجو در دیتاگرید

dataGridView1.Refresh();
if (txtsearch.Text == "")
{
MessageBox.Show("لطفا متن مورد نظر را برای جستجو وارد کنید");


}


this.dataGridView1.Refresh();


dataGridView1.ClearSelection(); //this will clear any currently selected cells
string searchstring = txtsearch.Text;


foreach (DataGridViewRow Rows in dataGridView1.Rows)


foreach (DataGridViewCell cell in Rows.Cells)


if (cell.Value.ToString().Contains(searchstring))
{
Rows.Selected = true; //this will highlight the entire row
break; //if you want to "Select All" that are found, take this line out


}


#region فیلتر کردن دیتاگرید بر اساس ردیف های انتخاب شده کدهای بالا
int j, m;
m = 0;
j = dataGridView1.RowCount - 1;
for (int i = m; i <= j; i++)
{

if (dataGridView1.Rows[i].Selected == false)
{
dataGridView1.Rows.RemoveAt(i);
j = j - 1;


i = 0;
}


}


if (dataGridView1.Rows[0].Selected == false)


dataGridView1.Rows.RemoveAt(0);
#endregion


#endregion
}
catch
{
}

hamid_hr
شنبه 13 دی 1393, 10:26 صبح
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=1886246&viewfull=1#post1886246

اینو هم ببینین بد نیست