我有一个像这样的pocos列表:
List<A> alist;
public class A {
public string M { get; set; }
public string N { get; set; }
public Bs List<B> { get; set; }
}
public class B {
public string X { get; set; }
public string Y { get; set; }
}
我可以将此绑定到dataGridView dgv
没问题。
现在我想要克隆一行,以及该行中A
的副本。
var row = dgv.SelectedCells[0].OwningRow;
var alist= (List<A>)((BindingSource)dgv.DataSource).DataSource;
var a = (A)row.DataBoundItem;
var clone = (DataGridViewRow)row.Clone(); //only copied a blank row, no content
dgv.Rows.Add(clone);
var copya = (A)clone.DataBoundItem;
as.Add(copya); // This 'copya' is NULL, because dataBoudItem is not copied.
如何实现这一目标,以便克隆行具有克隆数据?
我更喜欢简单的解决方法,而不是进入NotifyPropertyChanged,BindingList以及所有可能的情况?
答案 0 :(得分:1)
添加新的&#34;行&#34;在数据中而不是绑定的DataGridView。
var currentCell = dgv.CurrentCell;
var bs = (BindingSource)dgv.DataSource;
var data = (List<A>)bs.DataSource;
var currentSelection = (A)row.DataBoundItem;
data.Add(currentSelection);
bs.ResetBindings(false); // This should refresh the grid
dgv.CurrentCell = currentCell; // Put back the current cell