PDA

View Full Version : سوال: انتخاب یک ردیف از گریدویو



pishraft
چهارشنبه 19 مهر 1391, 16:39 عصر
سلام
من میخوام بعد از نمایش اطلاعات در گریدویو بتونم با وارد کردن اطلاعات لازم در تکست باکس هایی که دارم بتونم سطری رو که این اطلاعات رو داره انتخاب شده ببینم
فقط هم یک سطر اون اطلاعات رو داره و حالت مشابهی نداره
میشه کاری کرد که گریدویو جستجو کنه و سطر رو انتخاب شده نشون بده؟
ممنون

abcd_a
چهارشنبه 19 مهر 1391, 17:55 عصر
سلام
اگه منظورتون درست متوجه شده باشم
باید ابتدا خصوصیت selection mode دیتاگریدویو را برابر FullRowSelect در پنجره خصوصیات تنظیم کنی
بعد در رویدا cellMouseClick دیتا گرید ویو بنویس:

txt1.Text = elDataGridView2.SelectedRows[0].Cells["name"].Value.ToString();

Alireza.imani
چهارشنبه 19 مهر 1391, 18:26 عصر
لطفا بیش تر توضیح بدین...من آماتورم

pishraft
چهارشنبه 19 مهر 1391, 20:56 عصر
فکر کنم اشتباها اینجا رو دیدید آقای امیری
abcd_a من میخوام یه ردیف رو تو گرید ویو مشخص کنم
مثلا ردیفی که آی دی اون 5 هست مشخص شه
مثل عکس زیر
93819

morteza271
چهارشنبه 19 مهر 1391, 21:19 عصر
برای اینکار شما اول اینکه پراپرتی MultiSelect گرید رو برابر False قرار بدین.
بعد اینکه اطلاعات در یک تکست باکس وارد کردین و مثلا روی یه دکمه کلید کردین کارهای زیر رو انجام بدین :
با یه حلقه شماره سطری که اطلاعاتش با اطلاعات وارد شده برابره بدست بیارید.
مانند زیر :
private void button2_Click(object sender, EventArgs e)
{
int Index = -1;
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (textBox1.Text == dataGridView1.Rows[i].Cells["Column1"].Value.ToString())
{
Index = i;
break;
}
}
if (Index != -1)
dataGridView1.Rows[Index].Selected = true;
}

اگه منظورتون این نیست بیشتر توضیح بدین...
موفق باشید

abcd_a
پنج شنبه 20 مهر 1391, 06:28 صبح
فکر کنم اشتباها اینجا رو دیدید آقای امیری
abcd_a من میخوام یه ردیف رو تو گرید ویو مشخص کنم
مثلا ردیفی که آی دی اون 5 هست مشخص شه
مثل عکس زیر
93819
خوب مشلکی که نیست به جای name که تو دستور نوشم اسم فیلد id را تو دیتا گرید ویو بنویس و تو textBox یا هر متغیری که می خوای بریزش
txt1.Text = elDataGridView2.SelectedRows[0].Cells["id"].Value.ToString();


ولی تو رویداد cellMouseClick دیتا گریدویو این کد بنویس که موقعی که بر روی یک ردیف کلیک می کنی ایدی اون به دست بیاری

morteza271
پنج شنبه 20 مهر 1391, 09:10 صبح
خوب مشلکی که نیست به جای name که تو دستور نوشم اسم فیلد id را تو دیتا گرید ویو بنویس و تو textBox یا هر متغیری که می خوای بریزش
txt1.Text = elDataGridView2.SelectedRows[0].Cells["id"].Value.ToString();


ولی تو رویداد cellMouseClick دیتا گریدویو این کد بنویس که موقعی که بر روی یک ردیف کلیک می کنی ایدی اون به دست بیاری

مثل اینکه شما اصلا منظور دوستمون رو متوجه نشدین نه؟!!!!

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

Mahmoud Zaad
پنج شنبه 20 مهر 1391, 10:09 صبح
سلام
یه متد به شکل زیر می نویسید و هر جا خواستید فراخوانیش می کنید:

private void SearchDataGridView(DataGridView dgv, string strSeach, string ColName)
{
try
{
foreach (DataGridViewRow row in dgv.Rows)
{
if (row.Cells[ColName].Value == null)
{
continue;
}
if (row.Cells[ColName].Value.ToString().Trim().StartsWith(strSeach))
//if (row.Cells[ColName].Value.ToString().Trim().Contains(strSeach))
//if (row.Cells[ColName].Value.ToString().Trim().EndsWith(strSeach))
{
dgv.CurrentCell = row.Cells[ColName];
dgv.FirstDisplayedScrollingRowIndex = dgv.Rows[row.Index].Index;
return;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}
هر کدوم از ifها که کامنت شدن رو می تونید اجرا کنید. اولی سطری که یکی از سلولهاش با کلمه مورد نظر ما شروع میشه رو نشون میده، دومی سطری که یکی از سلول هاش شامل کلمه مورد نظر ما هست رو نشون میده و آخری سطری که یکی از سلولهاش با کلمه مورد نظر ما تموم میشه رو نشون میده.

منبعش هم همین سایته، چون خیلی وقت پیش دیدم نمی دونم کدوم تاپیکه.