从属性以外的地方获取DataGridView的数据

本文关键字:获取 DataGridView 数据 方获取 从属性 | 更新日期: 2023-09-27 18:04:32

我有一个DataGridView与数据源。DataGridView为每个属性自动生成列。我想改变这一点,以便它以不同的方式获取列的数据。

我如何确定DataGridView如何从数据源中的项目获取列和值?

从属性以外的地方获取DataGridView的数据

它可能使用反射,你真的想拦截和修改这种行为吗?

通常当默认的自动列生成是不够的,我禁用它,从代码创建列静态或解析配置文件,可以扩展以后,以便有新的列或不同呈现的那些没有重建整个项目。

我想这一切都取决于你想做什么。如果您只想绑定到特定的列,而不是基于DataSource对象中的属性自动生成列,那么您将执行以下操作:

 <asp:GridView ID="GridViewID" AutoGenerateColumns="false" runat="server">
    <Columns>
        <asp:BoundField DataField="Id" HeaderText="Id" />
        <asp:BoundField DataField="Name" HeaderText="Name" />
    </Columns>
 </asp:GridView>

将"AutoGenerateColumns"设置为false,并设置特定的列,GridView将只绑定在"DataSource"对象中,在指定列的"DataField"属性中标记的属性。

现在,如果您希望更改这些数据值,或者在绑定数据时特别修改数据,那么您将希望附加到"RowDataBound"事件。这样,当数据被绑定时,您可以在它附加到每一行时修改它。

使用DataGridView属性,您可以提供自己的数据存储:

虚拟模式是为非常大的数据存储而设计的。当当VirtualMode属性为true时,您将创建一个带有set的DataGridView行数和列数,然后处理cellvaluenneeded事件填充细胞。虚拟模式需要实现一个用于处理填充、编辑和删除的底层数据缓存DataGridView的单元格基于用户的操作。更多的有关实现虚拟模式的信息,请参见如何:实现Windows Forms DataGridView控件中的虚拟模式。