DataToolbar
DataToolbar 将标准的 DataNavigator 提升到一个更高的水平。
Visual Studio 项目、文档和帮助文件
引言
每次开发人员编写数据驱动的应用程序时,他都需要为最终用户提供数据管理功能,例如“创建新记录”。直到较新的 .NET Framework,Microsoft 都在其 Visual Studio 工具箱中包含了一个标准的 DataNavigator
控件来帮助开发人员。但是,如果您检查此控件的功能,您会发现缺少一些功能。
按条件(筛选)选择记录怎么样?排序怎么样?等等。因此,我开发了自己的控件 DataToolbar
以及第二个控件(姊妹控件)高级 Statusstrip。
DataToolbar
控件能为您做什么?
DataToolbar
控件将 Microsoft® 的 Data Navigator 控件的理念提升到一个新的高级数据管理功能,最终用户可以轻松处理。
最终用户功能
- 手动移动到记录(第一条、上一条、下一条、最后一条)
- 自动从记录移至记录(快进/快退),速度可调
- 显示当前记录位置、总记录数和过滤记录数
- 创建新记录
- 复制现有记录(当前记录)
- 拒绝数据更改(当前、过滤或所有有更改的记录)
- 手动点击保存挂起的更改
- 在激活其他操作(如记录移动)之前自动保存挂起的更改
- 书签并跳转到特定记录
- 通过内置的用户友好筛选条件生成器筛选记录
- 存储最多 5 个筛选条件值,以便以后使用预定义的筛选
- 通过内置的用户友好排序条件生成器对记录进行排序
- 通过文本和图像指示器显示数据表和当前记录状态信息
- 工具栏项目智能启用和禁用
开发人员功能
- 数据对象/数据库无关,因为使用了父窗体 Bindingsource 和 TableManager 对象。
- 更改背景颜色和背景图像
- 对齐工具栏项目(左对齐、居中、右对齐)
- 设置按钮大小(小、中、大)
- 通过具有唯一 Activity ID 的特殊事件获取活动的流程信息
- 能够终止活动
- 特殊窗体/控件脏标记功能,包括
DataGridView
控件 - 通过具有唯一
Activity
ID 的特殊事件获取错误信息 - 如果需要,将消息信息直接发送到单独的姊妹控件
advancedStatusstrip
,使用Statusstrip
控件的内置Progressbar
- 使用自定义属性集准备控件
该控件内置了 Windows 帮助文件,并附带大量文档文件。这些文件是 PDF 和 RTF 格式,开发人员可以在自己的文档中使用。
有三个不同的文件
DataToolbarManual_EN
是 Windows 帮助文件的文本文档
。DataToolbarDeveloper_EN
是一份详细解释控件代码的文档。- DataToolbar_EN.chm - 帮助文件。
请在 ZIP 文件中的 Documentation 目录中查找这些文件。
背景
要理解控件的代码,您应该熟悉 VB.NET 和 ADO.NET。
Using the Code
在这个部分找到代码片段是很正常的,但控件有 2200 多行代码,我认为在这里展示它会占用本文的空间。所有代码都经过深入注释,并在 95 页的 DataToolbarDeveloper_EN
文档中进行了详细解释!因此,我不再在这里展示代码。
下载 DataToolbarDeveloper_EN.pdf
这可以让你对文档有一个印象
在 ZIP 文件中,您会找到一个 Testproject
(控件项目),在 Testproject
的 BIN 目录中,您可以找到姊妹控件 advancedStatusstrip
的 DLL。我希望尽快在另一篇文章中发布此控件。
关注点
通过检查代码,您将学习如何在 Windows Forms 中使用 ADO 和数据绑定控件(Bindingsource 等)。有一个特殊的解决方案可以回答一个经常被问到的问题:“如何为窗体编写脏标记?”以及一个问题:“上下文菜单控件如何包含 Listview
?”
数据对象无关? 这是什么意思?如果您将 Table 或 Column 等数据对象从 Visual Studio Dataobject Toolbox 拖到 Form 上,VS 会自动创建几个类
- Dataset 用于临时存储数据
- Bindingsource 用于管理数据绑定控件
- TableAdapterManager 和 TableAdapters 用于特殊数据表。
这些类的创建基于对不同类型数据库(数据提供程序)的数据事务的处理,所有不同的命令都封装在这些类中。这是使用 ADO 对象的神奇之处之一。通过 Bindingsource 和 TableAdapter,开发人员能够编写与数据库无关的数据管理。这种优势的负面之处在于,他受到 Bindingsource 和 TableAdapter 的可能性和属性的限制。因此,当需要灵活性和完全控制时,可以决定使用直接 SQL 命令和通过 .Net System.Data 对象进行直接数据库通信。
如果您想要完全的控制和灵活性,您可能不应该使用 DataToolbar 控件!但根据我的经验,在大多数情况下,您使用该控件的决定将满足您的需求。
如果您喜欢我解决这个任务的方式,让开发人员有机会通过属性与控件交互,或与控件进程(工作流)交互并获取详细的错误信息,请随时模仿。这取决于我 20 多年的编码经验。
历史
注意:文档仅在主要更新时更改
3.03.5300 2014/07/03 - 小幅改动
DataToolbar_Load
事件已更改。isDirty
控件现在也监控DataGridView
Sub isDirtychanged
,为UpdateColumn
添加了自动DateTimeStamp
值- 为
DropDownButton
菜单项添加了图标 - 修正了文章的文本
3.03.5301 2014/07/07 - 中等改动
- 实现了筛选存储功能。
- 更新了帮助文件。
- 更新了开发人员文档。
- 更新了文章(感谢 Mika)
即将推出:
- 2014 年 8 月:德语帮助文件。
- 2014 年 8 月:新文章 advancedStatusstrip。