Winforms 不会显示添加到DataGridView的新记录
我有一个自定义的Order类,其中的组存储在List和DataGridView中。我认为问题出在我的实现中,下面是我如何使用它: 以OrdersDataGridView作为OrdersDataGrid封装的形式: 从控制台上看,这是成功添加的。我以为DataGrid会在这之后自动更新,因为订单发生了变化-我有什么遗漏吗Winforms 不会显示添加到DataGridView的新记录,winforms,datagridview,Winforms,Datagridview,我有一个自定义的Order类,其中的组存储在List和DataGridView中。我认为问题出在我的实现中,下面是我如何使用它: 以OrdersDataGridView作为OrdersDataGrid封装的形式: 从控制台上看,这是成功添加的。我以为DataGrid会在这之后自动更新,因为订单发生了变化-我有什么遗漏吗 DataGrid接受该类,因为它从成员中生成列。您需要在DataGrid上重新绑定数据。在更新基础数据源后,是否应该重新绑定DataGrid 使用以下代码: OrdersData
DataGrid接受该类,因为它从成员中生成列。您需要在DataGrid上重新绑定数据。在更新基础数据源后,是否应该重新绑定DataGrid 使用以下代码:
OrdersDataGrid.DataSource = Orders;
OrdersDataGrid.DataBind();
由于不能在使用对象列表作为数据源的DataGridView上使用DataBind,因此我找到了解决方案: 首先用BindingList替换列表-本质上是一样的,只是BindingList的行为类似于数据绑定 更改T以实现System.ComponentModel.InotifyProperty更改: 这涉及到添加一个属性:
public event PropertyChangedEventHandler PropertyChanged;
添加到每个变量的集合块:
以及增加另一种方法:
private void NotifyPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
来源:,您必须使用
Gridview1.DataBind();
请注意,每当您更新绑定到gridview或任何其他presenter列表控件的某些列表时,它只更新列表而不是gridview
如果您确实不想重新绑定项目,请使用.net 3.5中提供的IronPython,我查找了DataBind,但它似乎不存在于DataGridView中。DataBind是ASP.net特有的。问题是关于WinForms。
public string Name
{
get { return this.CustomerName; }
set {
this.CustomerName = value;
this.NotifyPropertyChanged("Name");
}
}
private void NotifyPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
Gridview1.DataBind();