PDA

View Full Version : سوال: انتخاب واحد توسط ديتا گريد



MS.Worm
شنبه 08 مرداد 1390, 14:31 عصر
سلام و خسته نباسيد خدمت دوستان
من يه برنامه دارم مينويسم كه داخل يكي از فرم‌هاي برنامه دانشجو بايد انتخاب واحد كنه
(البته برنامه تحت ويندوز هست).

داخل اين فرم قسمت بالا يك ديتا گريد گذاشتم كه درس‌هايي كه ارائه شده داخل اون نمايش داده ميشن.
پايين هم يك دكمه گذاشتم واسه ثبت درس‌هاي انتخابي.

حالا ميخوام چنتا قابليت خوب به برنامه ام بدم.

سوال: ميخوام در ديتا گريد كنار هر ركورد يك چك باكس باشه كه دانشجو هر درسي رو كه ميخواد تيك بزنه در آخر توسط همون كليد پايين تمام درسها در جدول ثبت بشه (يعني هر درس توي يك ركورد ثبت بشه: ثبت هم زمان چند ركورد).

سوال: ميخوام جدا از چك باكس يك دكمه هم كنار هر درس باشه داخل ديتا گريد ويو كه اگر بجاي تيك زدن اون دكمه رو زد، درس مورد نظر ثبت بشه.

باتشكر

morteza271
شنبه 08 مرداد 1390, 15:09 عصر
خوب شما برای اینکه چک باکس بذارین باید یک ستون از نوع چک باکس به ستون های گریدتون اضافه کنید و همچنین برای کلید هم باید یه ستون از نوع کلید (Button) اضافه کنید.
بعد در رویداد کلیک دکمه ثبت کلی تون توی یه حلقه باید چک کنید که هرکدام که تیک خورده بود رو ثبت کنه و در رویداد کلیک کلیدی که در هر سطر میذارین هم کدی بنویسید که همون سطر رو (یعنی سطر جاری) رو ثبت کنه.
موفق باشید.

MS.Worm
شنبه 08 مرداد 1390, 17:04 عصر
واقعا ممنون
تشكر

من براي ديتا گريد ويو هم كليد گذاشتم هم چك باكس توسط راهنمايي شما.

فقط يه چزي:
جدول من 100تا ركورد داره، پس ديتا گريد من هم 100سطر داره. حالا كد ثبت رو بايد كجا بنويسم براي كليد ديتا گريد كه هر سطر كه كليدش كليك شد ثبت بشه.
و نكته بعدي اينكه در كليد كلي چه‌جوري بايد كد بنويسم كه هر سطري كه چك باكس خورد ثبت بشه.

با تشكر

morteza271
شنبه 08 مرداد 1390, 18:18 عصر
خواهش میکنم.

برای کلیدی که برای هر سطر نوشتین میتونید از کد زیر استفاده کنید :
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex == 12)// 12 شماره ستونی است که کلید گذاشته اید
{
MessageBox.Show(dataGridView1.CurrentRow.Cells[3].Value.ToString());
// کد شما برای ثبت درس
}
}
یعنی باید کدتون رو داخل رویداد CellMouseClick از گریدتون بنویسید.

و برای کلید ثبت کلی هم میتونید از کد زیر استفاده کنید :
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value.ToString() == "True")
{
MessageBox.Show(dataGridView1.Rows[i].Cells[3].Value.ToString());
// کد شما برای ثبت درس
}
}
}

موفق باشید.

MS.Worm
شنبه 08 مرداد 1390, 18:46 عصر
واقعا ممنونم

مشكل اول كه واسه هر دكمه بود حل شد مرسي.

اما واسه مورد دوم كه در كليد كلي كد نوشتين اين اررور رو ميده:


Object reference not set to an instance of an object.

morteza271
شنبه 08 مرداد 1390, 19:52 عصر
کدوم خط این خطا رو میده؟؟!
برنامتون رو تریس کنید ببینید مشکلش کجاست؟

MS.Worm
شنبه 08 مرداد 1390, 23:09 عصر
خطا واسه اين خط هست


if (dataGridView1.Rows[i].Cells[0].Value.ToString() == "True")