将单元格值从一个数据网格传递到另一个数据网格
本文关键字:网格 数据网 数据 另一个 一个 单元格 | 更新日期: 2023-09-27 18:33:35
我有一个具有datagridview
的窗口窗体,当我双击一条记录时,整行被复制到另一个datagridview
。
这是代码
{
string strCon = "Data Source=*********''MSSQL2014;Initial Catalog=Artikelen;Persist Security Info=True;User ID=sa;Password=*******";
string strSQL = "select Artikelcode, Omschrijving, Verkoop_BTW_in, Verkoop_BTW, Verkoop_BTW_in from Artikelen";
SqlDataAdapter sda = new SqlDataAdapter(strSQL, strCon);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(sda);
// Populate a new data table and bind it to the BindingSource.
DataTable dt = new DataTable();
sda.Fill(dt);
dbBindSource.DataSource = dt;
// finally bind the data to the grid
DGVParent.DataSource = dbBindSource;
string sEmpDetailsToUpdate = DGVParent[1, DGVParent.CurrentRow.Index].Value.ToString();
//label1.Text = sEmpDetailsToUpdate + " aangekocht";
foreach (DataGridViewColumn DGV_Parents_Column in DGVParent.Columns)
{
DGVChild.Columns.Add((DataGridViewColumn)DGV_Parents_Column.Clone());
}
DataGridViewRow row = new DataGridViewRow();
for (int iCnt = 0; iCnt <= DGVParent.Rows.Count - 1; iCnt++)
{
if (DGVParent.Rows[iCnt].Cells[1].Value.ToString() == (sEmpDetailsToUpdate))
{
row = (DataGridViewRow)DGVParent.Rows[iCnt].Clone();
int iColIndex = 0;
foreach (DataGridViewCell cell in DGVParent.Rows[iCnt].Cells)
{
row.Cells[iColIndex].Value = cell.Value;
iColIndex += 1;
}
DGVChild.Rows.Add(row);
break; // NO MATCHES FOUND. BAIL OUT.
}
}
DGVChild.Focus(); // SET FOCUS ON THE CHILD.
}
这是在鼠标双击事件中声明的。
问题 1 是,每次我双击一行时,总是复制第一条记录。数据库中有 451 条记录。
我的计划是,如果我双击前记录 201,则复制记录 201,但事实并非如此。
问题 2 和3 我稍后会问,我认为问题 10 和 2 会在问题 1 解决时自动解决。
谁能帮我,我很绝望
这些下面有一条红线?
DGVChild.Columns.Add((DataGridViewColumn)parentColumn.Clone());
这个呢?
DGVChild.Columns.Add(((DataGridViewColumn)parentColumn).Clone());
你的代码中有很多问题。尝试改用 CellMouseDoubleClick 事件:
private void DGVParent_CellMouseDoubleClick(Object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex < 0)
return;
if (DGVChild.Columns.Count != DGVParent.Columns.Count)
{
DGVChild.Columns.Clear();
foreach (DataGridViewColumn parentColumn in DGVParent.Columns)
{
DGVChild.Columns.Add((DataGridViewColumn)parentColumn.Clone());
}
}
var parentRow = DGVParent.Rows[e.RowIndex];
var childRow = (DataGridViewRow)parentRow.Clone();
int iColIndex = 0;
foreach (DataGridViewCell cell in parentRow.Cells)
{
row.Cells[iColIndex++].Value = cell.Value;
}
DGVChild.Rows.Add(childRow);
DGVChild.Focus(); // SET FOCUS ON THE CHILD.
}