繁体   English   中英

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

[英]Get data for DataGridView from something else than properties

我有一个带DataSource的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属性,您可以提供自己的数据存储区:

虚拟模式设计用于非常大的数据存储。 当VirtualMode属性为true时,您将创建具有一定数量的行和列的DataGridView,然后处理CellValueNeeded事件以填充单元格。 虚拟模式需要实现底层数据缓存,以根据用户的操作处理DataGridView单元的填充,编辑和删除。 有关实现虚拟模式的详细信息,请参阅如何:在Windows窗体DataGridView控件中实现虚拟模式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM