View Full Version : جستجو در datagrideview با استفاده از Linq و نمایش سطر در textbox
vesall
شنبه 17 اسفند 1392, 18:44 عصر
با سلام.
قصد دارم در یکی از سطون های datagrideview به دنبال یک مقدار بگردم و در صورت پیدا کردن اون، مقادیر اون سطر رو در textbox ها نمایش بدم.
قصد فیلتر کردن datagrideviewرو ندارم و حتما میخواسم متد جستجو باشه .
برای این موع جستجو و نمایش جستجو کردم اما به نتیجه ای نریسدم، اگر فکر میکنید این موضوع تکراری هست حذف کنید تاپیک رو.:افسرده:
با تشکر
khokhan
شنبه 17 اسفند 1392, 20:21 عصر
با سلام.
قصد دارم در یکی از سطون های datagrideview به دنبال یک مقدار بگردم و در صورت پیدا کردن اون، مقادیر اون سطر رو در textbox ها نمایش بدم.
قصد فیلتر کردن datagrideviewرو ندارم و حتما میخواسم متد جستجو باشه .
برای این موع جستجو و نمایش جستجو کردم اما به نتیجه ای نریسدم، اگر فکر میکنید این موضوع تکراری هست حذف کنید تاپیک رو.:افسرده:
با تشکر
ابتدا اندیس ردیف مورد نظر رو بدست می آری بعد مقدار تکست باکسها رو با توجه به اون اندیس از گرید می گیری
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
String searchValue = textBox1.Text.ToString();
int rowIndex = -1;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[0].Value.ToString().Equals(searchValue))
{
rowIndex = row.Index;
break;
}
}
//dataGridView1.ClearSelection();
//dataGridView1.Rows[rowIndex].Selected = true;
textBox2.Text = dataGridView1.Rows[rowIndex].Cells[0].Value.ToString();
textBox3.Text = dataGridView1.Rows[rowIndex].Cells[1].Value.ToString();
textBox4.Text = dataGridView1.Rows[rowIndex].Cells[2].Value.ToString();
}
catch { }
}
khokhan
شنبه 17 اسفند 1392, 20:34 عصر
واگه خیلی اصرار داری تا با دستورات linq این کار انجام بشه:لبخند: اینطوری بنویس :
private void textBox5_TextChanged(object sender, EventArgs e)
{
int rowIndex = -1;
String searchValue = textBox5.Text.ToString();
DataGridViewRow row = dataGridView1.Rows
.Cast<DataGridViewRow>()
.Where(r => r.Cells[0].Value.ToString().Equals(searchValue))
.First();
rowIndex = row.Index;
textBox2.Text = dataGridView1.Rows[rowIndex].Cells[0].Value.ToString();
textBox3.Text = dataGridView1.Rows[rowIndex].Cells[1].Value.ToString();
textBox4.Text = dataGridView1.Rows[rowIndex].Cells[2].Value.ToString();
}
vesall
شنبه 17 اسفند 1392, 21:43 عصر
با سلام و تشکر بابت پاسختون ولی یه مشکلی هست.
تو دیتابیس من نوع nchar(10) رو انتخاب کردم و اون هم فضای خالی رو با space پر کرده و وقتی جستجو می کنم به خاطر اون spaec ها پیدا نمیکنه.
در مورد این میتونید راهنماییم کنید ؟
vesall
شنبه 17 اسفند 1392, 21:51 عصر
زمانی که از لینک هم استفاده کردم این ارور رو داد ( این روزا زیاد به این ارور بر میخورم. دلیلش چیه !؟ )
http://www.pic.tooptarinha.com/images/61u3rrnxafsi5jy9lh.jpg
khokhan
شنبه 17 اسفند 1392, 23:17 عصر
با سلام و تشکر بابت پاسختون ولی یه مشکلی هست.
تو دیتابیس من نوع nchar(10) رو انتخاب کردم و اون هم فضای خالی رو با space پر کرده و وقتی جستجو می کنم به خاطر اون spaec ها پیدا نمیکنه.
در مورد این میتونید راهنماییم کنید ؟
می تونین یه متد بنویسین تا فضاهای خالی توی دیتا گرید با یه متن پیش فرض پر بشه
dataGridView1.Columns[1].DefaultCellStyle.NullValue = "خالی";
vesall
یک شنبه 18 اسفند 1392, 02:18 صبح
اینطوری اگر کسی اسمش mohamad reza باشه فاصله وسطشو خراب می کنه! راه بهتری نیست ؟
مهرداد صفا
یک شنبه 18 اسفند 1392, 17:38 عصر
با سلام و تشکر بابت پاسختون ولی یه مشکلی هست.
تو دیتابیس من نوع nchar(10) رو انتخاب کردم و اون هم فضای خالی رو با space پر کرده و وقتی جستجو می کنم به خاطر اون spaec ها پیدا نمیکنه.
در مورد این میتونید راهنماییم کنید ؟
سلام.
از متود Trim برای حذف فضاهای خالی استفاده کنید. به این صورت:
int RowIndex=Datagrid.Rows.Cast<DataGridViewRow>().Where(r=>r.Cells[0].Value.Tostring().Trim()==MyValue).Select(r=>r.RowIndex).First();
vesall
دوشنبه 19 اسفند 1392, 13:38 عصر
ضمن تشکر فراوان از دوستان عزیز که جواب سوالم رو دادن.
کدی که با راهنمایی دوستان استفاده کردم رو میگذارم اینجا شاید به درد کسی بخوره:
textBox1.Text = cmbcdata.Text; textBox1.Select(0,4);
ssherkat = textBox1.SelectedText;
int RowIndex = dataGridView1.Rows.Cast<DataGridViewRow>().Where(r => r.Cells[0].Value.ToString().Trim() == ssherkat).Select(r => r.Cells[0].RowIndex).First();
txtkodsherkat.Text = dataGridView1.Rows[RowIndex].Cells[0].Value.ToString();
txtfnameferestande.Text = dataGridView1.Rows[RowIndex].Cells[1].Value.ToString();
راستی، ببخشید اگر اسم گذاریهام اینقدر بده :خجالت:
Mahmoud.Afrad
جمعه 23 اسفند 1392, 11:29 صبح
به جای nchar ، از نوع داده Navrchar استفاده کنید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.