首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winform克隆DataGridViewRow与DataBoundItem

Winform克隆DataGridViewRow与DataBoundItem
EN

Stack Overflow用户
提问于 2015-07-08 05:23:24
回答 1查看 127关注 0票数 0

我有一张这样的黑名单:

代码语言:javascript
复制
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副本。

代码语言:javascript
复制
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.

我如何使这种情况发生,以便克隆行拥有克隆数据?

如果可能的话,我更喜欢使用simpe,而不是进入NotifyPropertyChanged,BindingList等等吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-08 05:55:09

为绑定的DataGridView在数据中添加新的“行”。

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31284103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档