PDA

View Full Version : فرستادن اطلاعات یک dgv به dgv دیگر



mary3541
سه شنبه 05 خرداد 1388, 13:46 عصر
توی برنامم فرمی به شکل زیر دارم.
در dgv سمت راست اطلاعات جدول teacher که عبارت از Teacher_ID و Name و Family وجود داره و dgv سمت چپ خالیست.
میخواهم هرچند تا از ردیفهایی که در dgv سمت راست انتخاب میکنم با استفاده از Button ی که علامت جهت به سمت چپ را دارد به dgv سمت چپ منتقل شود.
در dgv سمت راست ستونی برای select کردن ردیفها نیز وجود دارد.
میشه کدش رو برام بگذارید

asefy2008
سه شنبه 05 خرداد 1388, 14:59 عصر
vTeacherTableAdapter.Insert();



داخل پرانتز با استفاده از کد زیر مقدار ها رو انتقال بده:




DataGridView.CurrentRow.Cells[1].Value

mary3541
سه شنبه 05 خرداد 1388, 16:48 عصر
من واسش کد زیر رو نوشتم ولی جواب نمیده
میشه کمک کنید فوریه


private void btnGoLeft_Click(object sender, EventArgs e)
{
DataGridViewRow dgr;
for (int i = 0; i < dgvAll.Rows.Count; )
{
if ((bool)dgvAll[0, i].Value == true)
{
dgr = dgvAll.Rows[i];
dgvAll.Rows.Remove(dgr);
dgvSelected.Rows.Add(dgr);
dgvSelected[0, dgr.Index].Value = false;
}
else
i++;
}
}

seven7777777
سه شنبه 05 خرداد 1388, 17:27 عصر
سلام

یعنی چی جواب نمیده ؟ یعنی ارور می ده ؟؟؟ اگه آره لطفا ارور رو بذارید .

در ضمن شما تو این کد به قسمت else نیازی ندارید در خود for اگه یک ردیف انتخاب نشده باشه ، داخل if نمیشه و بعد یکی به i اضافه میشه .

asefy2008
سه شنبه 05 خرداد 1388, 17:41 عصر
dgvSelected.Rows.Add(dgr);


تو این قسمت مشکل دارید؟

karimi84
سه شنبه 05 خرداد 1388, 17:51 عصر
ايا گريد دوم به جدولي بايند است ؟
اگر اينطور است مي بايست ازگريد اول remove كرده و به جدول دوم اضافه كنيد

h.jaza
سه شنبه 05 خرداد 1388, 19:27 عصر
روش های متفاوتی برای حل این مسئله وجود داره، مثلا می تونی از همون dgv.Rows.Add استفاده کنی و یا تو یه foreach از SelectedRows استفاده کنی که بیاد و برای تک تک Row های Selected مقادیرشون رو از یه گرید به اون یکی کپی کنه.

mary3541
سه شنبه 05 خرداد 1388, 19:44 عصر
dgv دومی به جدولی متصل نیست فقط اطلاعات جدولی که در dgv اولی هست در آن باید قرار گیرد

mary3541
سه شنبه 05 خرداد 1388, 19:46 عصر
ايا گريد دوم به جدولي بايند است ؟
اگر اينطور است مي بايست ازگريد اول remove كرده و به جدول دوم اضافه كنيد

گريد دوم به جدولي متصل نیست فقط اطلاعات جدولی که در گرید اول وجود دارد باید در آن قرار گیرد

mary3541
سه شنبه 05 خرداد 1388, 20:08 عصر
روش های متفاوتی برای حل این مسئله وجود داره، مثلا می تونی از همون dgv.Rows.Add استفاده کنی و یا تو یه foreach از SelectedRows استفاده کنی که بیاد و برای تک تک Row های Selected مقادیرشون رو از یه گرید به اون یکی کپی کنه.

میشه با foreach یه مثال برام بزنید؟

asefy2008
سه شنبه 05 خرداد 1388, 23:04 عصر
اون کدی که مشکل می گیره این طور بنویس ببین چی میشه:




if (dgvAll[0, i].Value != null)

h.jaza
سه شنبه 05 خرداد 1388, 23:29 عصر
مثلا خیلی ساده میشه اینجوری گفت:



foreach (DataGridViewRow item in dataGridView1.SelectedRows)
{
dataGridView2.Rows.Add(item.Cells[0].Value, item.Cells[1].Value, item.Cells[2].Value);
}

mary3541
سه شنبه 05 خرداد 1388, 23:38 عصر
اون کدی که مشکل می گیره این طور بنویس ببین چی میشه:



if

(dgvAll[0, i].Value != null)




دستتون درد نکنه.
دیگه error نمیده
فقط یه مشکل دیگه هست. وقتی چند تا ردیف رو select میکنم و به dgv دوم میفرستم توی dgv دومی فقط چند ردیف خالی میاد و اطلاعات dgv اول وارد آن نمیشه

asefy2008
سه شنبه 05 خرداد 1388, 23:56 عصر
dataGridView1.Rows.Add();


داخل پرانتز مقدار رو باستفاده از کد زیر قرار بده



dgvall[0,i].value.tostring();


به اندازه تعداد ستون هات
موفق باشی

mary3541
چهارشنبه 06 خرداد 1388, 01:01 صبح
مثلا خیلی ساده میشه اینجوری گفت:



foreach (DataGridViewRow item in dataGridView1.SelectedRows)
{
dataGridView2.Rows.Add(item.Cells[0].Value, item.Cells[1].Value, item.Cells[2].Value);
}


ممنون با این کد اطلاعات وارد dgv دوم میشه
فقط یه مشکل اینکه وقتی چند ردیف از dgv اول رو select میکنم و میخواهم به dgv دوم ببرم فقط آخرین ردیفی که انتخاب شده رو میبره و بقیه ردیفهای انتخابی رو نمیبره

mary3541
چهارشنبه 06 خرداد 1388, 01:02 صبح
dataGridView1.Rows.Add();


داخل پرانتز مقدار رو باستفاده از کد زیر قرار بده



dgvall[0,i].value.tostring();


به اندازه تعداد ستون هات

موفق باشی


ممنون
این کدو باید چجوری و کجای برنامه نوشت؟
وقتی گفتید به اندازه تعداد ستونها یعنی اگه 4 تا ستون دارم کد بالا را 4 بار بنویسم؟

asefy2008
چهارشنبه 06 خرداد 1388, 10:06 صبح
این طور بنویس(اگر 4تا ستون داشتی):




dataGridView1.Rows.Add(DGVall[0, i].Value.ToString(), DGVall[1, i].Value.ToString()
, DGVall[2, i].Value.ToString(), DGVall[3, i].Value.ToString());
DGVall.Rows.Remove(DGVall.Rows[i]);

h.jaza
چهارشنبه 06 خرداد 1388, 10:41 صبح
ممنون با این کد اطلاعات وارد dgv دوم میشه
فقط یه مشکل اینکه وقتی چند ردیف از dgv اول رو select میکنم و میخواهم به dgv دوم ببرم فقط آخرین ردیفی که انتخاب شده رو میبره و بقیه ردیفهای انتخابی رو نمیبره
من خودم چک کردم، هیچ مشکلی نداره، همه رو منتقل می کنه...
احتمالا مشکل از چیز دیگه ایه...

mary3541
چهارشنبه 06 خرداد 1388, 12:22 عصر
یه مشکل دیگه
توی یک فرم دیگه یه dgv دارم که دارای یک ستون با نام Term_ID_FK میباشدکه نشان دهنده تاریخ شروع ترمهاست و در چند ردیف این ستون یکسان میباشد.
میخوام با کلیک روی دکمه Edit تو یه dgv دیگه تمام ردیفهایی که Term_ID_FK آنها یکسان است رو نشون بدم
مثلا ردیفهایی که Term_ID_FK آنها 04/01/1388 است رو تو dgv دوم نشون بدم
البته dgv دومی تو یه فرم دیگست
اطلاعاتی که تو dgv اول هست از جدول TermTeacher که دارای فیلدهای TermTeacher_IDو Teacher_ID_FK و Term_ID_FK هست.
اطلاعاتی که تو جدول دوم قرار میگیره فقط ستونهای Term_ID_FK و Teacher_ID_FK