什么条件必须满足才能让用户通过GUI编辑DataGridView?例如按下F2进行修改,选择一行进行删除或添加新行?
当我将DataGridView.DataSource绑定至本地集合对象,例如List时,我可以执行这三个动作。
当我将DataGridView.DataSource绑定至DataTable或DataView时,我同样可以使用图形界面来实现这三个动作。
但是,当我将DataGridView.DataSource绑定至DbSet.ToList()或DbSet.ToArray()(Entity Framework)时,尽管我已通过DataGridView向导启用了“删除”和“添加”功能,并明确设置了AllowUserToAddRows和AllowUserToDeleteRows为true,但我只能修改现有行的非主键值。运行应用程序时,它不会显示星号符号,表明能够添加新行。也无法删除行。
然而,数据显示正确。
所以,我感到困惑。上述数据源的哪些特征可能导致GUI中的不同行为?
谢谢。
当我将DataGridView.DataSource绑定至本地集合对象,例如List时,我可以执行这三个动作。
当我将DataGridView.DataSource绑定至DataTable或DataView时,我同样可以使用图形界面来实现这三个动作。
但是,当我将DataGridView.DataSource绑定至DbSet.ToList()或DbSet.ToArray()(Entity Framework)时,尽管我已通过DataGridView向导启用了“删除”和“添加”功能,并明确设置了AllowUserToAddRows和AllowUserToDeleteRows为true,但我只能修改现有行的非主键值。运行应用程序时,它不会显示星号符号,表明能够添加新行。也无法删除行。
然而,数据显示正确。
所以,我感到困惑。上述数据源的哪些特征可能导致GUI中的不同行为?
谢谢。
DataGridView
中的List<T>
的唯一方法是使用BindingSource
。根据绑定源规则,如果将List<T>
设置为BindingSource
的数据源,然后将BindingSource
设置为DataGridView
的数据源,则可以添加、编辑和删除List<T>
的项目。 - Reza Aghaei