该 DataGridView 控件可以采用三种不同的模式显示数据:绑定、未绑定和虚拟。 根据要求选择最合适的模式。
无约束
未绑定模式适用于显示通过编程方式管理的小数据量。 在非绑定模式下,不像在绑定模式中那样直接将DataGridView 控件附加到数据源。 相反,你必须通过使用 DataGridViewRowCollection.Add 方法自行填充该控件。
未绑定模式在处理静态数据、只读数据时,或在需要编写自己的代码与外部数据存储交互时特别有用。 但是,如果希望用户与外部数据源交互,通常使用绑定模式。
有关使用只读未绑定 DataGridView的示例,请参阅 “如何:创建未绑定的 Windows 窗体 DataGridView 控件”。
绑定
绑定模式适用于使用与数据存储的自动交互来管理数据。 可以通过设置DataGridView属性将DataSource控件直接附加到其数据源。 当控件绑定数据时,数据行会自动推送和拉取,而无需您进行显式管理。
AutoGenerateColumns当属性是true
时,数据源中的每个列将导致在控件中创建相应的列。 如果想要创建自己的列,可以将此属性 false
设置为此属性,并在配置时使用该 DataPropertyName 属性绑定每个列。 如果要使用默认生成的类型以外的列类型,这非常有用。 有关详细信息,请参阅 Windows 窗体 DataGridView 控件中的列类型。
有关使用绑定 DataGridView 控件的示例,请参阅 演练:验证 Windows 窗体 DataGridView 控件中的数据。
还可以在绑定模式下向 DataGridView 控件添加未绑定列。 如果要显示一列按钮或链接,使用户能够在特定行上执行作,这非常有用。 它还可用于显示包含从绑定列计算的值的列。 可以在CellFormatting事件的处理程序中填充计算列的单元格值。 如果您将DataSet或DataTable用作数据源,您可能需要使用DataColumn.Expression属性来创建一个计算列。 在这种情况下,控件 DataGridView 将像数据源中的其他任何列一样处理计算列。
不支持按绑定模式下的未绑定列排序。 如果在绑定模式下创建包含用户可编辑值的未绑定列,则必须实现虚拟模式,以在控件按绑定列排序时维护这些值。
虚拟
使用虚拟模式,可以实现自己的数据管理作。 在绑定模式下,当控件按绑定列进行排序时,有必要保持未绑定列的值。 但是,虚拟模式的主要用途是在与大量数据交互时优化性能。
将 DataGridView 控件附加到您管理的缓存,由您的代码控制何时推送和拉取数据行。 为了保持内存占用量较小,缓存的大小应与当前显示的行数类似。 当用户将新行滚动到视图中时,代码会从缓存请求新数据,并选择性地从内存中刷新旧数据。
实现虚拟模式时,需要跟踪数据模型中何时需要新行,以及何时回滚新行的添加。 此功能的确切实现取决于数据模型的实现和数据模型的事务语义:提交范围是位于单元格级别还是行级别。
有关虚拟模式的详细信息,请参阅 Windows 窗体 DataGridView 控件中的虚拟模式。 有关如何使用虚拟模式事件的示例,请参阅 演练:在 Windows 窗体 DataGridView 控件中实现虚拟模式。
另请参阅
- DataGridView
- DataGridView.DataSource
- DataGridView.VirtualMode
- BindingSource
- DataGridViewColumn.DataPropertyName
- 在 Windows 窗体 DataGridView 控件中显示数据
- Windows 窗体 DataGridView 控件中的列类型
- 演练:创建未绑定 Windows 窗体 DataGridView 控件
- 如何将数据绑定到 Windows Forms DataGridView 控件
- Windows 窗体 DataGridView 控件中的虚拟模式
- 演练:在 Windows 窗体 DataGridView 控件中实现虚拟模式