Windows 窗体 DataGridView 控件中的数据显示模式

DataGridView 控件可以三种不同的模式显示数据:绑定、未绑定和虚拟。 请根据你的需求选择最适合的模式。

未绑定

未绑定模式适用于显示以编程方式管理的相对少量的数据。 你不会像在绑定模式中那样将 DataGridView 控件直接附加到数据源。 相反,必须自行填充控件,通常使用 DataGridViewRowCollection.Add 方法。

未绑定模式对于静态、只读数据或当你想要提供与外部数据存储交互的自己的代码时特别有用。 但是,如果希望用户与外部数据源交互,通常会使用绑定模式。

有关使用只读未绑定 DataGridView 的示例,请参阅如何:创建未绑定的 Windows 窗体 DataGridView 控件

Bound

绑定模式适用于使用与数据存储的自动交互来管理数据。 可以通过设置 DataSource 属性将 DataGridView 控件直接附加到其数据源。 当控件为数据绑定时,无需由你进行显式管理即可推送和拉取数据行。 当 AutoGenerateColumns 属性为 true 时,数据源中的每一列都会导致在控件中创建相应的列。 如果更倾向创建自己的列,可以将此属性设置为 false,并在配置时使用 DataPropertyName 属性绑定每个列。 如果想要使用非默认生成的列类型,该方法能派上用场。 有关详细信息,请参阅 Windows 窗体 DataGridView 控件中的列类型

有关使用绑定 DataGridView 控件的示例,请参阅演练:验证 Windows 窗体 DataGridView 控件中的数据

还可以在绑定模式下将未绑定的列添加到 DataGridView 控件。 如果想要显示一列按钮或链接以使用户能够对特定行执行操作,该方法能派上用场。 该方法还可用于显示包含从绑定列计算出的值的列。 可以在 CellFormatting 事件的处理程序中填充计算列的单元格值。 但是,如果使用 DataSetDataTable 作为数据源,你可能希望改用 DataColumn.Expression 属性来创建计算列。 在这种情况下,DataGridView 控件将像处理数据源中的任何其他列一样处理计算列。

不支持在绑定模式下按未绑定列进行排序。 如果在绑定模式下创建包含用户可编辑值的未绑定列,则必须实现虚拟模式以在控件按绑定列排序时维护这些值。

虚拟

使用虚拟模式,可以实现自己的数据管理操作。 当控件按绑定列排序时,有必要在绑定模式下维护未绑定列的值。 但是,虚拟模式的主要用途是在与大量数据交互时优化性能。

DataGridView 控件附加到所管理的缓存,并在推送和拉取数据行时附加代码控件。 若要使内存占用量较小,缓存的大小应与当前显示的行数类似。 当用户将新行滚动到视图中时,你的代码会从缓存中请求新数据,并(可选)从内存中刷新旧数据。

在实现虚拟模式时,需要跟踪数据模型中何时需要新行以及何时回滚新行的添加。 此功能的确切实现将取决于数据模型的实现和数据模型的事务语义;提交范围是位于单元格级别还是行级别。

有关虚拟模式的详细信息,请参阅 Windows 窗体 DataGridView 控件中的虚拟模式。 有关说明如何使用虚拟模式事件的示例,请参阅演练:在 Windows 窗体 DataGridView 控件中实现虚拟模式

另请参阅