Я работаю над проектом инвентаризации, в котором есть список деталей и список товаров.Каждый продукт должен иметь хотя бы одну часть, связанную с ним.Список деталей находится в BindingList
, то есть DataSource
для нескольких DataGridView
с, и есть отдельный BindingList
, который является DataSource
для связанных деталей.Мне нужно взять строку (часть), выбранную в одной DGV
, и скопировать всю строку в другую DGV
одним нажатием кнопки.
Я использовал "1BestCsharp blog" "C #Учебное пособие - Как отобразить проверенные строки в Datagridview к другому DataGridView [с исходным кодом] "Видео YouTube (https://www.youtube.com/watch?v=ErrVyyogKCQ&list=PLFDH5bKmoNqyDKntkVv-NURTAlPIhMPqA&index=19),, но произошла ошибка во время выполнения. Я не записал ошибку, но в ней говорилось, что я не могуиспользуйте код в этом видео из-за установки DataSource
.
Я также рассмотрел код C # в Как скопировать содержимое из одного DataGridview в другой DataGridview , но, похоже, этобольше ориентировано на копирование всего 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;
Код выбора строки:
private void dgvModProdAllPrtList_CellClick(object sender, DataGridViewCellEventArgs e)
{
IndAddPrt = e.RowIndex;
Inventory.CurrentPartID = (int)dgvModProdAllPrtList.Rows[IndAddPrt].Cells[0].Value;
Inventory.CurrentPart = Inventory.lookupPart(Inventory.CurrentPartID);
dgvModProdAllPrtList.DefaultCellStyle.SelectionBackColor = Color.CornflowerBlue;
}
Я уверен, что есть довольно простой способ сделать это, но я просто не уверен, что это будет.