PDA

View Full Version : سوال: انتقال دیتاگرید 1 به دیتاگرید 2 در همان فرم



علی فتحی
یک شنبه 03 خرداد 1394, 23:12 عصر
ببخشید اجبارا تاپیک ایجاد کردن خیلی جستجو کردم به نتیجه نرسیدم.
من دی یک فرم دو تا دیتاگرید دارم دومی با ویزار به بانک اکسس وصل است . اولی به اس کیو ال . حالا میخوام اطلاعات دیتاگرید 1 رو به 2 انتقال بدم .
این کدو نوشتم ولی فقط عدد اخر رو اد میکنه .


for (int i = 0; i < dataGridView1.Rows.Count; i++) // foreach (DataGridViewRow row in dataGridView1.Rows)
{
for (int j = 0; j < foroush_DetailDataGridView.Rows.Count-1; j++)
// foreach (DataGridViewRow row2 in foroush_DetailDataGridView.Rows)
{
foroush_DetailDataGridView.Rows[j].Cells[0].Value = dataGridView1.Rows[i].Cells[0].Value.ToString();
// this.foroush_DetailTableAdapter.Fill(this.tTMSData Set.Foroush_Detail);
}
}

علی فتحی
دوشنبه 04 خرداد 1394, 00:13 صبح
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) {
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
for (int ii = 0; ii < dataGridView2.Rows.Count - 1; ii++)
{
for (int jj = 0; jj < dataGridView2.Columns.Count; jj++)
{
dataGridView2.Rows[ii].Cells[jj].Value = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}


}
}

Javad_raouf
دوشنبه 04 خرداد 1394, 09:43 صبح
سلام
dataGridView2.Rows.Clear();
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
dataGridView2.Rows.Add(dataGridView1.Rows[i]);

علی فتحی
دوشنبه 04 خرداد 1394, 14:51 عصر
خیلی ممنون از جوابتون ولی دیتاگرید من متناظر یعنی همسان نیستند .
یعنی انتقال اطلاعات از بانک اس کیو ال به اکسس هستش

Javad_raouf
دوشنبه 04 خرداد 1394, 14:59 عصر
فقط نام ستون ها فرق می کنه یا نوعش و تعدادشونم فرق می کنه؟

علی فتحی
دوشنبه 04 خرداد 1394, 15:03 عصر
private void buttonItem3_Click(object sender, EventArgs e) {
//foreach (DataGridViewRow row in dataGridViewX1.Rows)
//{
OleDbConnection scn = new OleDbConnection();
OleDbCommand scm = new OleDbCommand();
scn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=" + textBoxItem1.Text;
scm.Connection = scn;
//scm.CommandText = "INSERT INTO Foroush_Detail (Radif,KalaKhadamatName,KalaCode,Price,HCKharidarT ypeCode,KharidarAddress,KharidarName,KharidarLastN ameSherkatName,KharidarNationalCode,HCKharidarType 1Code,StateCode,CityCode)VALUES(@p1,@p2,@p3,@p4,@p 5,@p6,@p7,@p8,@p9)";
//scm.Parameters.Clear();
//scm.Parameters.AddWithValue("@p1", int.Parse(row.Cells[0].Value.ToString()));
//scm.Parameters.AddWithValue("@p2", "آرد");
//scm.Parameters.AddWithValue("@p3", "0");
//scm.Parameters.AddWithValue("@p4", row.Cells[4].Value.ToString());
//scm.Parameters.AddWithValue("@p5", "1");
//scm.Parameters.AddWithValue("@p6", "مهاباد");
//scm.Parameters.AddWithValue("@p7", row.Cells[5].Value.ToString());
//scm.Parameters.AddWithValue("@p8", row.Cells[6].Value.ToString());
//scm.Parameters.AddWithValue("@p9", row.Cells[7].Value.ToString());
//scn.Open();
//scm.ExecuteNonQuery();
//scn.Close();

این کدو نوشتم بازم نمیشه

علی فتحی
دوشنبه 04 خرداد 1394, 15:08 عصر
private void buttonItem3_Click(object sender, EventArgs e) {
//foreach (DataGridViewRow row in dataGridViewX1.Rows)
//{
OleDbConnection scn = new OleDbConnection();
OleDbCommand scm = new OleDbCommand();
scn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=" + textBoxItem1.Text;
scm.Connection = scn;
//scm.CommandText = "INSERT INTO Foroush_Detail (Radif,KalaKhadamatName,KalaCode,Price,HCKharidarT ypeCode,KharidarAddress,KharidarName,KharidarLastN ameSherkatName,KharidarNationalCode,HCKharidarType 1Code,StateCode,CityCode)VALUES(@p1,@p2,@p3,@p4,@p 5,@p6,@p7,@p8,@p9)";
//scm.Parameters.Clear();
//scm.Parameters.AddWithValue("@p1", int.Parse(row.Cells[0].Value.ToString()));
//scm.Parameters.AddWithValue("@p2", "آرد");
//scm.Parameters.AddWithValue("@p3", "0");
//scm.Parameters.AddWithValue("@p4", row.Cells[4].Value.ToString());
//scm.Parameters.AddWithValue("@p5", "1");
//scm.Parameters.AddWithValue("@p6", "مهاباد");
//scm.Parameters.AddWithValue("@p7", row.Cells[5].Value.ToString());
//scm.Parameters.AddWithValue("@p8", row.Cells[6].Value.ToString());
//scm.Parameters.AddWithValue("@p9", row.Cells[7].Value.ToString());
//scn.Open();
//scm.ExecuteNonQuery();
//scn.Close();

این کدو نوشتم بازم نمیشه

علی فتحی
دوشنبه 04 خرداد 1394, 15:17 عصر
هر ردیف را برای گرید 2 هم باید تعریف کنم؟کد شما اخطار میده میگه اول ستونها رو انتقال بده

for (int i = 0; i < dataGridViewX1.Rows.Count - 1; i++) {
for (int j = 0; j < dataGridViewX2.Rows.Count - 1; j++)
{
dataGridViewX2.Rows.Add(dataGridViewX1.Rows[i]);
}
}

علی فتحی
دوشنبه 04 خرداد 1394, 15:24 عصر
اینم اخطار کد شما
No row can be added to a DataGridView control that does not have columns. Columns must be added first.

علی فتحی
سه شنبه 05 خرداد 1394, 09:59 صبح
کسی نیست جواب بده؟

Javad_raouf
سه شنبه 05 خرداد 1394, 12:43 عصر
سوال منو جواب ندادید


فقط نام ستون ها فرق می کنه یا نوعش و تعدادشونم فرق می کنه؟
ضمنا مگه دیتاگرید 2 ستون نداره؟:اشتباه:

علی فتحی
پنج شنبه 07 خرداد 1394, 09:08 صبح
تعداد ستون فرق میکنه ولی نوعش نه . نوع ستون متن باشه یا عدد دقیقا مثل همدیگه ست.

Javad_raouf
پنج شنبه 07 خرداد 1394, 09:37 صبح
ببین فرض کن دیتاگرید یک 3 ستون داره: Name، FamilyName، MeliCode
و دیتاگرید 2 ستون داره به نام های FamilyName,MeliCode
در این صورت مسلما ستون Name رو نمیشه به دیتاگرید 2 انتقال کرد ولی اگر بخوای فقط مقادیر دو ستونی که در دیتاگرید2 موجود است رو از دیتاگرید1 کپی کنی این کد مناسبه:
dataGridView2.Rows.Clear();
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
DataGridViewRow row = dataGridView1.Rows[i];
dataGridView2.Rows.Add(row.Cells["FamilyName"].Value, row.Cells["MeliCode"].Value);
}

god of war
پنج شنبه 07 خرداد 1394, 11:09 صبح
این کد جواب نمیده ؟

DataTable dt = new DataTable();
dt = (DataTable)dataGridView1.DataSource;
dataGridView2.DataSource = dt;


البته اگه درست سوالو فهمیده باشم :افسرده::افسرده::ناراحت:

علی فتحی
شنبه 09 خرداد 1394, 09:56 صبح
با لینک جواب داده کسی خواست کدشو میذارم.ولی با ادو موفق نشدم متصفانه

علی فتحی
دوشنبه 11 خرداد 1394, 23:45 عصر
اصلا خیلی خیلی خیلی راحتر از انچه فکرشو میکردم ربطی به ستون و ردیف هم نداره:

table1BindingSource.DataSource = db.Table1s.ToList();
table2BindingSource.DataSource =table1BindingSource;
همین کد ساده کار میکنه .هیچ مشکلی هم نداره

علی فتحی
یک شنبه 17 خرداد 1394, 00:16 صبح
فقط ذخیره اطلاعات در تیبل 2 چگونه است با ویزارد لطفا اگر امکان داره

Amir4317
سه شنبه 19 خرداد 1394, 11:32 صبح
بدی Access اینه که برای ذخیره هر رکودی یک بار باید به دیتابیس وصل بشی. :اشتباه:
Freach :ناراحت: