如何在c#中将form1中的数据网格视图的内容复制到form2中的另一个数据网格视图
本文关键字:数据网 网格 视图 数据 复制 form2 另一个 中将 form1 | 更新日期: 2023-09-27 18:27:40
我有两种获胜形式。在中一,我有一个dataGridView
,我将在那里收集所有数据
现在我想做的是,当我在表单1中按下一个按钮时,我想显示表单2,并且表单1数据网格视图中的所有行都需要复制到表单2中的数据网格视图。
我该怎么做?
如果这不可能,是否可以将form1中的数据网格视图作为浮动控件(可以在UI上自由移动)?
我可以使用下面的代码以相同的形式从一个dataGridView
复制到另一个。
private DataGridView CopyDataGridView(DataGridView dgv_org)
{
try
{
if (dataGridView2.Columns.Count == 0)
{
foreach (DataGridViewColumn dgvc in dgv_org.Columns)
{
dataGridView2.Columns.Add(dgvc.Clone() as DataGridViewColumn);
}
}
DataGridViewRow row = new DataGridViewRow();
int k = 2;
if (first == false)
{
k=0;
first = true;
}
for (int i = k; i < dgv_org.Rows.Count; i++)
{
row = (DataGridViewRow)dgv_org.Rows[i].Clone();
int intColIndex = 0;
foreach (DataGridViewCell cell in dgv_org.Rows[i].Cells)
{
row.Cells[intColIndex].Value = cell.Value;
intColIndex++;
}
dataGridView2.Rows.Add(row);
}
dataGridView2.AllowUserToAddRows = false;
dataGridView2.Refresh();
}
catch (Exception ex)
{
MessageBox.Show("Copy DataGridViw Error");
}
return dataGridView2;
}
但不能复制到form2。
private void CopyAll(DataGridView from, DataGridView to)
{
if (to.Columns.Count == 0)
{
foreach (DataGridViewColumn dgvc in from.Columns)
{
to.Columns.Add(dgvc.Name, dgvc.HeaderText);
}
}
to.Rows.Clear();
foreach(DataGridViewRow dgvr in from.Rows)
{
List<string> cells = new List<string>();
foreach(DataGridViewCell dgvc in dgvr.Cells)
{
cells.Add(dgvc.Value.ToString());
}
to.Rows.Add(cells.ToArray());
}
}
也许你现在不需要这个,但希望它能在未来对其他人有所帮助。
// Retrieve data from database in form1
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("Select Image,Name from Input where ID = '" + txt_LID.Text + "'",conn);
DataTable dt = new DataTable();
sda.Fill(dt);
dGV_form1.DataSource = dt;
// Button Code on form1
Form2 lcp = new Form2();
lcp.dGV_form2.DataSource = dt;
lcp.Show();
this.Hide();
frm.dataGridView2.Rows.Clear();
if (dataGridView1.Rows.Count > 0)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value != null)
{
frm.dataGridView2.Rows.Add();
frm.dataGridView2.Rows[i].Cells[0].Value = dataGridView1.Rows[i].Cells[0].Value.ToString();
frm.dataGridView2.Rows[i].Cells[1].Value = dataGridView1.Rows[i].Cells[1].Value.ToString();
frm.dataGridView2.Rows[i].Cells[2].Value = dataGridView1.Rows[i].Cells[2].Value.ToString();
frm.dataGridView2.Rows[i].Cells[3].Value = dataGridView1.Rows[i].Cells[3].Value.ToString();
frm.dataGridView2.Rows[i].Cells[4].Value = dataGridView1.Rows[i].Cells[4].Value.ToString();
frm.dataGridView2.Rows[i].Cells[5].Value = dataGridView1.Rows[i].Cells[5].Value.ToString();
}
}
} this 100% works i have used it
为什么要复制,您可以传递引用。
首先为源创建数据表
DataTable dt = new Datatable();
//Populate datatable
gridView.DataSource =dt;
点击按钮
Form2 f2 = new Form2(dt);
f2.Show();
Form2具有重载的构造函数。