PDA

View Full Version : انتقال اطلاعات از یک datagridview به datagridview دیگر



hadi vafaii
پنج شنبه 19 شهریور 1394, 21:02 عصر
سلام عرض می کنم خدمت دوستان و اساتید محترم
یه مشکلی داشتم که امیدوارم کمک کنین تا برطرف بشه
مشکلم اینه که من دوتا دیتاگریدویو دارم که میخوام اطلاعاتی رو که تویه گریدویو اولی هست رو با کلیک روی هر سلول اون خونه رو انتقال بدم به گریدویو دومی و بتونم بعد ازش پرینت بگیرم اما هر کاری میکنم نمی شه
مثلا میخوام اسم کالا و تاریخ انقضا مستقیما وقتی کلیک کردم انتقال پیدا کنه اما سلول تعداد خالی باشه تا بتونم خودم مقدار دهی کنم از کدی که تو عکس قرار دادم استفاده کردم اما نشد یه کد دیگه هم که هر سطر رو که میخوای کپی میکنه اما مثلا دو سلول رو انتخاب کنی اونارو بصورت ستونی میچینه لطفا کمک کنین
موفق باشید

private void dgvanbar_CellClick(object sender, DataGridViewCellEventArgs e)
{

string a= dgvanbar.CurrentRow.Cells[3].Value.ToString();
dgvfaktor.Rows.Add(a);
}
این همون کدیه که اخر سر گفتم اما عکسم اینه
135154

csharp.net
پنج شنبه 19 شهریور 1394, 21:23 عصر
انتقال محتویات یک سلول از DataGridView به سلول معادل در DataGridView دیگر کافیست که از کد زیر در رویداد CellClick استفاده کنید :

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < this.dataGridView2.Rows.Count && e.ColumnIndex < this.dataGridView2.Columns.Count)
{
this.dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value =
this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
}
}
http://www.w3-farsi.com/wp-content/uploads/2015/04/Move-Cell-content-Datagrid-to-Another.png

منبع w3-farsi.com (http://www.w3-farsi.com)

hadi vafaii
جمعه 20 شهریور 1394, 01:35 صبح
ممنون از کمکتون اما یک ایرادی داره و اونم اینه که سلولی که انتخاب میکنی درست معادل همون خونه رو با اون سلول پر میکنه اما من میخوام مثلا سلول یک تو سلول مثلا 3 جای گذاری شه یعنی خودم تعیین کنم که سلول کدوم خونه رو پر کنه و مشکل بعد اگه ردیف های دو دیتاگرید برابر نباشه ردیفی که تو دیتاگرید مبدا وجود داره ولی تو دیتاگرید مقصد وجود نداره اطلاعات انتقال پیدا نمی کنه

davidrobert
جمعه 20 شهریور 1394, 08:28 صبح
برای اینکه اطلاعات رو از دیتاگرید ویو دیگه ارسال کنید به دیتاگرید ویو دیگه به این صورت کد نویسی کنید در فرم دریافت کنند که اطلاعات رو میگیره به این صورت کد نویسی کنید.

برای شناسایی داده ها در فرم دریافتی مقادیر و معرفی سلول ها
public void FillDataGridView(DataTable table)
{
DGV.Rows.Clear();
{
for (int i = 0; i < table.Rows.Count; i++)
{
DataRow odr = table.Rows[i];
DGV.Rows.Add();
DGV.Rows[i].Cells["ClmCodeKala"].Value = odr["column2"].ToString();
DGV.Rows[i].Cells["ClmNameKala"].Value = odr["column3"].ToString();
DGV.Rows[i].Cells["ClmDate"].Value = clsn.dateshort(DateTime.Now);
DGV.Rows[i].Cells["ClmTime"].Value = clsn.TimeFull(DateTime.Now);
}
}
}
کد مربوط به دکمه که مزنید وارد فرم دیگه میشه برای دیافت اطلاعات.
void Rec()
{
FrmSendRegstrtionFormRecive fmg = new FrmSendRegstrtionFormRecive(this);
fmg.ShowDialog();
}
private void ClmRecive_Click(object sender, EventArgs e)
{
Rec();
}


این فرم مروبط به ارسال کننده داده هستش از دیتاگرید ویو به فرم دیگه. که دیتاگرید ویو دیگه اطلاعات رو بگیره
فرم ارسال
این قسمت کد در قسمت InitializeComponent است.
public FrmSendRegstrtionFormRecive(FrmRegstrtionReciveeDe groter _F1)
{
InitializeComponent();
DataGridViewCheckBoxColumn DoWork=new DataGridViewCheckBoxColumn();
DoWork.HeaderText = "انتخاب";
DoWork.Name = "ClmSelect";
DoWork.Width = 50;
DGV.Columns.Insert(0,DoWork);
this.DGV.CellClick+=new DataGridViewCellEventHandler(DGV_CellClick);
this.f1 = _F1;
}

این کد مربوط به دکمه ارسال به دیتاگرید ویو دریافت کننده هستش.
private void BtnSend_Click(object sender, EventArgs e)
{
DataTable table=new DataTable();
table.Columns.Add("column2", typeof(string));
table.Columns.Add("column3", typeof(string));
foreach (DataGridViewRow row in DGV.Rows)
{
if (Convert.ToBoolean(row.Cells["ClmSelect"].Value) == true)
{
table.Rows.Add(row.Cells[1].Value, row.Cells[2].Value);
}
}
f1.FillDataGridView(table);
this.Hide();
FrmRegstrtionReciveeDegroter fml =
(FrmRegstrtionReciveeDegroter)Application.OpenForm s["FrmRegstrtionReciveeDegroter"];
fml.Show();
//this.Hide();
//FrmRegstrtionReciveeDegroter fml=new FrmRegstrtionReciveeDegroter();
//fml.ShowDialog();
table.Dispose();
this.Hide();
}