如何在 Windows Forms/WPF 中为数据库视图(带连接)创建编辑器?

Posted

技术标签:

【中文标题】如何在 Windows Forms/WPF 中为数据库视图(带连接)创建编辑器?【英文标题】:How to create editor for database view (with joins) in Windows Forms/WPF? 【发布时间】:2012-05-21 19:15:48 【问题描述】:

在 WPF/WinForms 中为数据库中的某些数据创建快速编辑器的最简单方法是什么,其中数据由 SQL Server 数据库中的视图表示?

假设我有一个表Person id int, name nvarchar(max), GenderID int, CityID int,其中 GenderID 和 CityID 是对表 Gender 和 City 的引用。在编辑器中,Person 将显示为 name 文本框、gender 组合框(从 Gender 表中选择性别名称)和 city 列相同。

我可以做一些简单的事情来让一些控制/代码生成这个吗?如果我只想选择数据,那么 WinForms DataGridView 或 WPF DataGrid 可以为每个属性生成一列,并为集合中的每个对象显示一行。 -

如果关系是由外键定义的,是否有某种类似的魔术控件可以为数据库视图执行此操作?

在我看来,成千上万的开发人员都面临过这种问题——快速创建一个 GUI 来编辑与其他表有关系的数据库行,因此应该有某种普遍接受的解决方案。还是每个人都在代码中这样做?或者,如果有其他语言的工具,不是 C#,不是 Windows 窗体 - 比如 dBase。

【问题讨论】:

您知道 DataGridView.AutoGenerateColumns 属性吗? (msdn.microsoft.com/en-us/library/…)。它会自动完成很多事情,您可以以某种方式覆盖 DataGridView 对其进行自定义。 我是,浏览数据效果很好,但编辑数据却没有解决问题 我相信它也应该支持编辑,只要它“认为”你的数据源是可编辑的。请在您的问题中说明您提供什么样的数据源。 你的数据访问层是什么?如果您使用的是实体框架,您可以将选择的视图和插入/更新/删除映射到存储的过程中,从而允许您控制基础表的更新方式。 仅供参考,如果 SQL Server 从多个表中获取数据,SQL Server 本身不允许对视图执行 UPDATE。 【参考方案1】:

您正在描述 Web 开发中所谓的脚手架。脚手架是一种为数据库中的每个表自动生成 UI 的方法。脚手架可让您创建一个功能 UI,用于根据数据架构查看和编辑数据。以下是 WPF 脚手架的一些资源。

    代码项目网站上有一篇WPF脚手架文章:WPF CRUD Generator (Scaffolding) 还有一个 Codeplex 项目可能会有所帮助:WPF Scaffolder

享受吧!

【讨论】:

【参考方案2】:

ASP .NET 动态数据使用模板为您自动生成一个 UI,该 UI 将代表您选择的数据库表/视图,包括您想要的自动生成的 CRUD 功能。

它甚至可以正确获取查找表并自动呈现下拉菜单。

http://msdn.microsoft.com/en-us/library/ee845452(v=vs.100).aspx

【讨论】:

以上是关于如何在 Windows Forms/WPF 中为数据库视图(带连接)创建编辑器?的主要内容,如果未能解决你的问题,请参考以下文章

asp编程中如何设定文本框为数字型

如何为数组分配双指针? C/C++

为数组分配空间

如何释放为数组分配的内存?

如何为数据点选择唯一颜色

如何在不显示所有结果的最大值的情况下为数学运算以及其他元素选择最大值