数据网格使用情况源自 SQL 服务器
本文关键字:SQL 服务器 情况 用情 数据网 网格 数据 | 更新日期: 2023-09-27 17:47:20
我想知道使用链接到数据表组合(联接)的数据网格控件的最佳方式,该控件都只允许显示,在基础表中创建新行和删除。
数据网格似乎提供了后一种功能,但我还没有找到一种让我满意的方法,而不仅仅是在一个网格上显示并提供特定的单独编辑创建和删除功能。
为了便于说明,假设数据库包含:-
客户表
* 客户编号
* 客户名称
订单表
* 客户编号
* 订单行项目
* 订单行数量
并且我想丢失 CustomerID 以用于显示目的,但希望能够创建新客户并删除现有客户,也许使用确认性对话框。
CSharpAtl 是正确的,请使用 Master-Detail 控件。在 WinForm 应用中使用一个示例,请参阅 http://msdn.microsoft.com/en-us/library/y8c0cxey.aspx。
WinForm 数据网格支持添加、编辑和删除主记录和详细信息记录。至于您的问题,即如果您更改详细信息记录以使其与新的主记录匹配会发生什么;这是不可能的。根据设计,"详细信息"行仅包含与主条目匹配的记录,例如,由于"详细信息"行不包含任何客户信息,因此无法(例如)将订单更改为属于新客户。
如果要将"详细信息"行移动到另一个"主页",则必须为新"主页"创建新的"详细信息"行,复制旧"详细信息"行中的数据,然后删除旧的"详细信息"行。如果您雄心勃勃,则可以支持剪切和粘贴或拖放详细信息行,但在内部您必须创建/复制/删除。
如果关系是 1 比多,则可以使用主详细信息的路线。 [链接文本][1]
[1]: http://msdn.microsoft.com/en-us/library/aa479344.aspx/"主细节"
如果我正确理解您的问题,您有一个查询,该查询执行多个表的连接,这些表显示在单个网格上。你希望用户能够操作该网格,并让基础表反映更改。
解决此问题的一种方法是实现存储过程来执行 CRUD 操作。存储过程将包含从所有必需的表中插入、更新和删除记录的逻辑。每个过程都需要为网格上的每个绑定字段提供一个参数。将过程设置为数据源上的插入、更新和删除命令。
因此,想象一下,如果您要向网格添加新记录。网格调用插入命令,将参数传递给存储过程。然后在存储过程中,您将创建逻辑以确定网格中的新行是否需要新客户,或者它是现有客户,然后相应地调整操作。