我在 SQL Server 中有一个存储过程,它根据参数返回不同的结构。
换句话说,它可能会返回一个包含三个字段或 15 个字段的结果集,并且列名将有所不同。
如何在 WinForm 应用程序中显示这些结果?
我目前使用实体框架来访问数据,但显然这在这种情况下不起作用。
数据将是只读的,即无需编辑。只需要显示它。
我猜我需要跳过 EF,直接调用 SP,然后用自动列填充 DataGridView。
格雷格
我在 SQL Server 中有一个存储过程,它根据参数返回不同的结构。
换句话说,它可能会返回一个包含三个字段或 15 个字段的结果集,并且列名将有所不同。
如何在 WinForm 应用程序中显示这些结果?
我目前使用实体框架来访问数据,但显然这在这种情况下不起作用。
数据将是只读的,即无需编辑。只需要显示它。
我猜我需要跳过 EF,直接调用 SP,然后用自动列填充 DataGridView。
格雷格
由于您正在检索动态数据结构,因此您也需要使网格列动态化。我要做的是,在成功检索结果集后,Columns
每次调用 SP 并且需要在屏幕上刷新数据时,清除集合并从头开始重新创建它们。不要使用AutoGenerateColumns
,因为它们几乎没有机会自定义它们的外观,而是自己定义每一列,以便您可以选择要显示的内容和方式。
这是我找到的最佳答案:How to use a DataAdapter with stored procedure and parameter
简而言之,使用 DataAdapter 和 DataTable。即使使用 AutoGenerateColumns,列标题看起来也很棒,并且无论返回的表结构如何,它都可以正常工作。
格雷格