我正在处理一个包含零件清单和产品清单的库存项目。每个产品必须至少具有一个与之关联的部件。零件列表位于BindingList
中,它是多个DataSource
的{{1}},并且有一个单独的DataGridView
是相关零件的BindingList
。我需要选择一个DataSource
中选中的一行(一部分),然后单击按钮将整行复制到另一DGV
中。
我使用了“ 1BestCsharp博客”“ C#教程-如何将Datagridview检查的行分配到另一个DataGridView [带有源代码]” YouTube视频(https://www.youtube.com/watch?v=ErrVyyogKCQ&list=PLFDH5bKmoNqyDKntkVv-NURTAlPIhMPqA&index=19),但是出现运行时错误。我没有记下错误,但是它说由于设置了DGV
,所以无法使用该视频中的代码。
我还查看了How to Copy Contents in one DataGridview to another DataGridview中的C#代码,但这似乎更适合将整个DataSource
复制到另一个DGV
,这不是我所需要的。
我的DGV
配置:
DGV
行选择代码:
dgvModProdAllPrtList.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgvModProdAllPrtList.DefaultCellStyle.SelectionBackColor = dgvModProdAllPrtList.DefaultCellStyle.BackColor;
dgvModProdAllPrtList.DefaultCellStyle.SelectionForeColor = dgvModProdAllPrtList.DefaultCellStyle.ForeColor;
dgvModProdAllPrtList.RowHeadersVisible = false;
dgvModProdAllPrtList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dgvModProdAllPrtList.DataSource = Inventory.PartsList;
dgvModProdAllPrtList.Columns[0].HeaderText = "Part ID";
dgvModProdAllPrtList.Columns[1].HeaderText = "Part Name";
dgvModProdAllPrtList.Columns[2].HeaderText = "Inventory";
dgvModProdAllPrtList.Columns[3].HeaderText = "Price";
dgvModProdAllPrtList.Columns[4].Visible = false;
dgvModProdAllPrtList.Columns[5].Visible = false;
dgvModProdAssociatedPrt.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgvModProdAssociatedPrt.DefaultCellStyle.SelectionBackColor = dgvModProdAssociatedPrt.DefaultCellStyle.BackColor;
dgvModProdAssociatedPrt.DefaultCellStyle.SelectionForeColor = dgvModProdAssociatedPrt.DefaultCellStyle.ForeColor;
dgvModProdAssociatedPrt.RowHeadersVisible = false;
dgvModProdAssociatedPrt.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dgvModProdAssociatedPrt.DataSource = Product.AssociatedParts;
dgvModProdAssociatedPrt.Columns[0].HeaderText = "Part ID";
dgvModProdAssociatedPrt.Columns[1].HeaderText = "Part Name";
dgvModProdAssociatedPrt.Columns[2].HeaderText = "Inventory";
dgvModProdAssociatedPrt.Columns[3].HeaderText = "Price";
dgvModProdAssociatedPrt.Columns[4].Visible = false;
dgvModProdAssociatedPrt.Columns[5].Visible = false;
我敢肯定有一种相当简单的方法可以做到这一点,但我不确定是什么。