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