PDA

View Full Version : مبتدی: کلیک روی سطر DataGridView



iran2008
جمعه 01 آبان 1394, 11:30 صبح
سلام دوستان عزیزم؛
من یه DataGridView دارم که شامل 4 ستون هست،
یک فرم هم دارم که علاوه بر گرید ویو، 4 تا تکست باکس مثلا t1 t2 t3 t4 هم داره.
حال میخوام وقتی روی هر یک از سطرهای گریدویو کلیک میکنم، اطلاعات هر سلولی که توی اون سطر هست تو تکست باکس ها نشون داده بشه.
یعنی ستون اول تو تکست باکس اول؛ ستون دوم تکست باکس دوم؛ ستون سوم تکست باکس سوم، ستون چهارم تکست باکس چهارم.

میخوام عمل اپدیت کردن سطر در گریدویو رو یاد بگیرم.
تقریبا میتونم یک دونه سلول هر سطر رو جداگونه اپدیتش کنم، ولی میخوام با کلیک روی هر سطری ، هر چهار سلول توی یه سطر ، محتویاتشون وارد چهارتا تکست باک ها بشوند و راحت بصورت سطر ویرایش و آپدیت رو انجام بدم.
ممنون میشوم کمکی کنید.
تشکر./

R_khaleghi
جمعه 01 آبان 1394, 11:43 صبح
سلام دوستان عزیزم؛
من یه DataGridView دارم که شامل 4 ستون هست،
یک فرم هم دارم که علاوه بر گرید ویو، 4 تا تکست باکس مثلا t1 t2 t3 t4 هم داره.
حال میخوام وقتی روی هر یک از سطرهای گریدویو کلیک میکنم، اطلاعات هر سلولی که توی اون سطر هست تو تکست باکس ها نشون داده بشه.
یعنی ستون اول تو تکست باکس اول؛ ستون دوم تکست باکس دوم؛ ستون سوم تکست باکس سوم، ستون چهارم تکست باکس چهارم.

میخوام عمل اپدیت کردن سطر در گریدویو رو یاد بگیرم.
تقریبا میتونم یک دونه سلول هر سطر رو جداگونه اپدیتش کنم، ولی میخوام با کلیک روی هر سطری ، هر چهار سلول توی یه سطر ، محتویاتشون وارد چهارتا تکست باک ها بشوند و راحت بصورت سطر ویرایش و آپدیت رو انجام بدم.
ممنون میشوم کمکی کنید.
تشکر./

شما می تونین از این کد استفاده کنین:

textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();

مقدار 0 اندیس اولین ستون از دیتاگرید ویو می باشد.
البته اضافه کنم قبل از اینکه برنامه اجرا کنید بهتر است که حال انتخاب (SelectionMode) را به FullRowSelect تغییر حالت دهید.
سپس برای هر تکس باکس باید خط فوق را تایپ کنید و فقط نام تکس باکس ها عوض کنید و اندیس فیلد.

iran2008
شنبه 02 آبان 1394, 14:23 عصر
با تشکر از دوست عزیز؛
بنده کاری که گفتید رو انجام دادم،
یجوری عمل میکنه، مثلا روی هر سطری که میزنم درست محتویات آن سطر وارد تکست باکس ها نمیشن.
تقریبا مثلا اگر روی سلول اول، سلول دوم سطر دوم، سلول سوم سطر سوم... .. نامرتب هست کلیک کردن.
میشه گفت حالت ضربدری که کلیک کنید توی گرید ویو محتویات توی تکست باکس ها میان.


txtFname.Text = dgwEmdadgar.CurrentRow.Cells[1].Value.ToString();
txtLname.Text = dgwEmdadgar.CurrentRow.Cells[2].Value.ToString();
txtCodeMeli.Text = dgwEmdadgar.CurrentRow.Cells[3].Value.ToString();
txtDesc.Text = dgwEmdadgar.CurrentRow.Cells[4].Value.ToString();

R_khaleghi
شنبه 02 آبان 1394, 16:17 عصر
با تشکر از دوست عزیز؛
بنده کاری که گفتید رو انجام دادم،
یجوری عمل میکنه، مثلا روی هر سطری که میزنم درست محتویات آن سطر وارد تکست باکس ها نمیشن.
تقریبا مثلا اگر روی سلول اول، سلول دوم سطر دوم، سلول سوم سطر سوم... .. نامرتب هست کلیک کردن.
میشه گفت حالت ضربدری که کلیک کنید توی گرید ویو محتویات توی تکست باکس ها میان.


txtFname.Text = dgwEmdadgar.CurrentRow.Cells[1].Value.ToString();
txtLname.Text = dgwEmdadgar.CurrentRow.Cells[2].Value.ToString();
txtCodeMeli.Text = dgwEmdadgar.CurrentRow.Cells[3].Value.ToString();
txtDesc.Text = dgwEmdadgar.CurrentRow.Cells[4].Value.ToString();




منظور شما این است که کاربر باید روی سطر ها و ستون های مختلف کلیک کنید؟؟؟
یعنی کاربر می تواند کد ملی از ستون پنجم، نام از ستون اول و ... انتخاب کند؟؟؟

اگر اینجور نیست در بالا هم گفتم در Properties دیتاگریدویو مشخصه SelectionMode دیتاگرید را به FullRowSelect تغییر دهید که در حالت پیش فرض این گزینه نمی باشد.

ولی برای انتخاب تک تک فیلد ها می توانید از متد CellClick دیتاگرید استفاده کنید.

iran2008
شنبه 02 آبان 1394, 16:55 عصر
سلام مجدد؛
نه نمیخوام که کاربر روی سطر ها وستون های مختلف همزمان کلیک کند؛
میخوام مثلا اگه کاربر روی یک سطر فعلی حالا هر سلولش، کلیک کرد، محتویان اون سطر مثلا که شامل چهارتا سلول هست وارد چهارتا تکست باکس بشوند. همین.
این کدی که شما گفتید رو انجام دادم، هر بار که روی سطرها میزنم یکی عمل میکنه یکی نمیکنه، اونیکه عمل نمیکنه باید مثلا تو همون سطر رو یه سلول دیگش بزنیم تا عمل کنه.
یه جور خاصی جواب میده الان.

R_khaleghi
شنبه 02 آبان 1394, 17:33 عصر
سلام مجدد؛
نه نمیخوام که کاربر روی سطر ها وستون های مختلف همزمان کلیک کند؛
میخوام مثلا اگه کاربر روی یک سطر فعلی حالا هر سلولش، کلیک کرد، محتویان اون سطر مثلا که شامل چهارتا سلول هست وارد چهارتا تکست باکس بشوند. همین.
این کدی که شما گفتید رو انجام دادم، هر بار که روی سطرها میزنم یکی عمل میکنه یکی نمیکنه، اونیکه عمل نمیکنه باید مثلا تو همون سطر رو یه سلول دیگش بزنیم تا عمل کنه.
یه جور خاصی جواب میده الان.

می توانید از این کد نیز استفاده کنید:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
textBox1.Text = dataGridView1.CurrentRow.Cells["Username"].Value.ToString();
textBox2.Text = dataGridView1.CurrentRow.Cells["Pass"].Value.ToString();
}

در این کد بجای اندیس نام فیلد ها را وارد کنید.
شاید درست شد

iran2008
شنبه 02 آبان 1394, 18:02 عصر
این نمونه فرم و کدهای نوشته شده است؛
لطفا ببینید و اجرا کنید تا مفهوم بنده رو بهتر متوجه بشید.
دریافت پروژه- کلیک کنید (http://www.axopic.com/uploads/1445700063211.zip)
روی هر سطر و سلول های ان سطر کلیک کنید. ببینید محتویات سلولهای فلان سطر وارد تکست باکس های زیر می شوند ولی درست عمل نمیشه اگه متوجه بشید.

یه چیزی که متوجه شدم من در رویداد dataGridView1_CellContentClick کد ها رو نوشتم ولی شما در رویداد CellClick
------------

خوب اکنون من کدها رو تو رویداد CellClick نوشتم و خوشبختانه اوکی شد.
با تشکر از شما