我有很多与datagrid的数据源绑定有关的问题.我有一个DatagridView,我从列表中设置DataSource
Listli = new List (); MyClass O = new MyClass(); O.Name = "Aden"; O.LastName = "B"; O.Id = 12; li.Add(O); O = new MyClass(); O.Name = "Li"; O.LastName = "S"; O.Id = 22; li.Add(O); Mydgv.DataSource = li;
MyClass的地方
public Class MyClass { public string Name {get; set;} public string LastName {get; set;} public decimal Id {get; set;} }
现在想要添加一个新的行到我的DataGridView
DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone(); row.Cells[0].Value = "XYZ"; row.Cells[1].Value = 50.2; Mydgv.Rows.Add(row);
但它是不可能的,因为它引发错误的数据源的DataGrid与列表绑定里.所以我的第一个问题是我怎么能这样做?
我的第二个问题是,为了做到这一点,我提出了一个解决方案来改变我的List li并向其添加新行数据,然后将其设置为datagrid的数据源,但我认为它不是一个可行的解决方案是否有更好的解决方案?
甚至试图通过CurrencyManager来做到这一点
CurrencyManager currencyManager1 = (CurrencyManager)BindingContext[MyGrid.DataSource]; currencyManager1.SuspendBinding(); DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone(); row.Cells[0].Value = "XYZ"; row.Cells[1].Value = 50.2; Mydgv.Rows.Add(row); currencyManager1.ResumeBinding();
据我所知,我暂停了DataGrid的Binding以向Grid提供格式,因为我在我的帖子Make Row Visible中执行了false.但是为什么在向datagrid添加行时它不起作用?