MultiRow发现之旅(四)- 使用MultiRow开发WinForm应用(附源码)

前文回顾

MultiRow发现之旅(一)- 高效模板设计器

MultiRow发现之旅(二)- 详解属性管理器

MultiRow发现之旅(三)- 模板管理器和Table

本文的目标是通过MultiRow快速开发一个简单的WinForm数据库应用 - “员工信息管理系统”。 其中会使用到MulitRow提供的部分内置的Cell类型、MultiRow模板创建、以及MulitRow的打印功能。

准备数据库

首先,我们使用Microsoft Access 2007数据库,创建一个数据表,命名为Employees,创建一些字段,给每个字段指定数据类型。请看下图:

字段数据类型和名字确定后,切换到DataSheet View模式下,开始填入数据,如下图所示:

传统的表格控件在展示数据表当中的一条记录时,大部分都是将一条记录展示在表格控件当中独立的一行里,每行当中的列对应数据表当中的一列,比如.net framework 提供的DataGridView控件,它做数据绑定绑定之后,如下图所示:

上面创建的数据库有19个字段,如果使用DataGridView展示,应用程序将需要更宽的距离才能完全展示一条记录。这样导致可读性大打折扣。因此,对于一条数据表记录可以自由布局,增强可读性和美观性是表格类控件一直前进的方向之一。

而使用MulitRow,你可以随心所欲地在MulitRow的一个Row上面安排每个Cell的排列位置,甚至可以让多个Cell叠加,让每个Cell来展示数据表记录当中的每个数据域。这时候你需要做的是打开Visual Studio,创建一个Windows Forms Application工程,然后添加一个MultiRow的模板(Template),至于如何添加模板和使用MulitRow提供的集成模板设计器,可以参考之前的三篇文章。

编辑模板

在创建模板的时候,我们需要根据数据库当中的不同字段类型选择不同的Cell类型来展示数据。

本例中,我只使用了9种Cell类型,根据自己的喜好摆出来下面的布局形式:

所有的Cell都排布在模板的Row区域当中,这个Row在模板加载到GcMultiRow控件之后,会根据数据记录条数发生迭代。另外,我根据不同的数据域类型,选择了不同的Cell类型展示数据,其中

· 背景为SystemColors.Control的Cell为RowHeaderCell,用来描述后面的数据类型的Cell,就像一个标签一样,他可以有Hover,点击等效果,也可以执行选择以及显示行号;

· 布尔类型的数据可以使用CheckBoxCell来展示;

· “电话号码”,“邮编”,“月薪”等有固定格式的类型,可以使用MaskedTextBoxCell来展示,通过设置他的Mask属性来控制显示的格式;

· 日期类型的可以使用DateTimePicker类型;

· 图片类型可以使用ImageCell,等等。

MulitRow提供了多达23种Cell类型,你可以根据数据类型选择不同的Cell类型展示数据,在这里就不详细介绍,可以参考http://www.grapecity.cn/powertools/products/mr_features.htm

当Cell的位置摆放好之后,需要将每个数据Cell跟数据表当中的字段关联起来,让这个Cell在运行起来之后显示特定的数据列当中的值。可以使用MultiRow模板设计器提供的TemplateProperty管理器或者属性管理器来设置每个数据Cell的DataField属性,将其和数据表的列名相关联,这样模板加载之后,每个数据Cell就可以显示数据表当中对应的列了。

如果觉得模板的样式过于单调,可以需要调节Template当中的相关Style属性来设置外观,可以参考MulitRow帮助文档中“如何设置Style和皮肤”章节。我设计了一个样式,如下图所示:(示意而已,如果觉得丑还请见谅~)

应用模板

完成上面工作后,一个基本的模板就设计好了。剩下的工作就是将Template应用到一个GcMultiRow控件。我们在Form上添加一个GcMultiRow控件,然后将设计好的Template设置给他的Template属性,并且给GcMultiRow控件添加数据源,以及设置一些属性。

完成应用程序

最后,可以在Form当中添加两个ToolStrip,用来展示导航和打印功能。之后运行工程,效果如下:

可以点击Form底部的按钮来切换上一个和下一个记录,通过Form顶部的按钮来预览打印效果。

值得一提的是,上面应用程序仅仅显示了GcMultiRow控件当中的一个Row,也就是数据表当中的一条记录,我将Form的大小调节的刚好跟一个Row的大小相当,因此每次可以浏览一个Row,通过点击导航条上面的按钮,可以使用GcMultiRow提供的按行滚动的效果,看起来就像是一条一条在浏览。这时候,如果你将Form高度拉大,你会看到多个Row存在于Form之上,就像一个一个卡片一样,请看下图:

你也可以保持Form上面不管如何放缩都保持只有一个Row,这个需要写几行代码,在这里我就不演示了,如果感兴趣,可以访问GCDN的MulitRow专区,我们可以一起讨论一些细节的问题。

预览和打印

MultiRow也提供了打印功能,以及各种打印模式和设置,下面是使用SingleRow打印模式,保证每页只打印一条记录,打印预览效果如下所示:

如果满意的话,直接打印好了~

源代码下载:

SourceCode

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

Mac下快捷键的收集整理

最近刚换用了Mac的笔记本,因为之前是Linux用户,感觉切换的过程非常平滑,但是难免有些小不适应,在使用过程中,遇到一些快捷键,收集了下来,与大家分享。

14050
来自专栏熊二哥

Sublime快速入门

在当前的互联网时代,任何程序语言和相关技术都只是实现互联网应用的一种手段,这也就造成了大量的互联网工程师长期与不同的语言、技术、系统环境、IDE等打交道。因此一...

20350
来自专栏不知的专栏

反-反爬虫:用几行代码写出和人类一样的动态爬虫

本文将从 Phantomjs 动态爬虫介绍起,用3行代码傻瓜式完成基于 Casper 的动态爬虫来绕过对抗策略获取页面数据。

1.3K20
来自专栏DannyHoo的专栏

底牌项目中上传牌谱功能之编辑标准模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/de...

13230
来自专栏码生

ReactNative 面试题

今天有一个 ReactNative 的面试。 时间紧迫,临时写了几个问题,初级面试问题。 都是关键字

98230
来自专栏CSDN技术头条

前端知识点总结——Vue

作用:将表达式执行的结果 输出当调用元素的 innerHTML 中;还可以将数据绑定到视图。

14020
来自专栏JAVA高级架构开发

使用 CodeMirror 打造属于自己的在线代码编辑器

写这个的目的是因为之前项目里用到过 CodeMirror,觉得作为一款在线代码编辑器还是不错,也看到过有些网站用到过在线代码编辑,当然我不知道他们是用什么做的,...

43200
来自专栏python学习之旅

python appium笔记(二):元素定位

#这里的示例是用android来说明的,xpath应该是通用的,resource-id不太清楚,没配过IOS的环境

25910
来自专栏破晓之歌

Python 的 GUI 开发工具 原

Flexx 是一个纯 Python 工具包,用来创建图形化界面应用程序。其使用 Web 技术进行界面的渲染。你可以用 Flexx 来创建桌面应用,同时也可以导出...

85420
来自专栏挖掘大数据

Cobub无码埋点关键技术实现流程(附图)

随着大数据时代的到来,数据采集也已经变的越来越重要。前端埋点作为一个比较成熟的数据接入手段被广泛应用着。目前埋点分为两种方式,有码与无码埋点。有码埋点比较容易理...

27160

扫码关注云+社区

领取腾讯云代金券