我们先来简单了解一下WinForm和FarPoint,WinForm是·Net开发平台中对Windows Form的一种称谓。而FarPoint是一款模拟EXCEL的控件。它可以根据用户的要求实现很大部份的EXCEL操作,且包括多个子表、表格风格定义、公式计算、排序、分组等等都可以实现。本文主要是介绍利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入。

  在Winform界面中以类似Excel表格界面中录入相关的数据,其中界面需要录入图片信息,基础信息,列表信息等,综合这些后界面的效果就如下面这样。而本文主要针对如何利用FarPoint Spread表格控件实现类似Excel界面丰富数据的保存及显示,以及希望在使用过程中的一些经验对大家在开发Winform的Excel数据录入和显示方面的开发有一定帮助。

  根据上面的界面分类能够看到,这个界面大概能怪划分的数据类型分别是基础字段数据、多行的列表数据、图片数据和备注信息的显示录入。那么下面我们根据分类介绍如何实现这些功能。

  1、类似Excel的列表总体界面设计

  首先,在这个列表中需要在Winform的界面中进行设计拖入一个Farpoint控件到Winform界面上后,然后设置好布局等属性,接着在右键菜单上启动Spread Designer,这样就可以设计相关的Excel样式表格的内容了。

  注意:一般情况下,这个界面是在窗体中设计的,当然你的内容可以通过拷贝的方式复制过来,从Excel文档中复制粘贴过来,如果从效果上来看是一样的。不过,虽然Farpoint Spread控件提供了一个另存为Xml文件的操作,并且可以通过API,Open一个XML文件,不过Open的XML文件后,好像内容不能进行修改的,而且类型CellType也是Null(空值)的,所以如果要在一个窗体上动态加载布局是没办法实现的。不过对于开发来说,我们在设计时就把Excel样式的列表界面设计好,这也是一个不错的选择。

  2、下拉列表的绑定

  大多数情况下我们为了输入的便利性,我们会选择在Excel列表中通过下拉列表方式输入内容,如此便可以提高速度和用户体验,但这些内容必须是通过数据库内容进行绑定的,Farpoint Spread控件通过输入很多的内容且包括ComoBox类型数据来绑定下拉列表的数据。如下所示。

  当我们下拉类型被指定后,Excel列表的显示方式随之变化,比如像下面一样来显示。

  上面打上对勾的就我们下一步需要绑定列表数据的列表了,绑定列表的数据也不麻烦,但是需要明确Cell的序号,绑定给他数据源就可以了,可实际上的话,经常要数着Cell的行列号上的数字是非常费心神且很不方便。

  对于BindDictItems代码,我使用了扩展方法,所以这个我们是能通过对象直接调用,具体的函数代码如下所示,这个就是调用字典业务类获取数据,但是需要给Items属性赋值,注意其中的Edittable最好选择为true,否则它只会类似于DropdownList那样只显示里面列表的内容。

  3、如何构造界面自定义录入

  为了能够很方便的输入内容,在对于一些例如弹出框选择内容,图片编辑,备注内容(很长的时候)的编辑来说,我们通常是通过自定义界面来录入比较好,比较Excel样式的界面,录入单元格很小,有时候也实现不了的。所以通过制定控件单元格的单击事件,用来处理特殊录入信息的操作。

  下面是展开界面部分内容给大家看看,如下面所示:

  例如,对于下拉列表内容,我们需要进行弹出式选择内容,如下界面所示。

  对于图片单元格,我们单击就可以弹出下面的窗体才能够很方便编辑或者查看。

  对于备注内容,我们让他弹出一个窗体,更好展现和编辑。

  4、数据的显示和保存

  在显示普通的主表数据字段这方面是非常的简单的,就是把内容赋值给对应的单元格Text属性即可,如下所示。

当我们需要保存的时候,就是把对应的内容保存到实体类进行数据保存操作即可。

  但是在数据比较多的时候,我们需要把内容保存分开,各个函数负责不同的部分即可,在主表保存后继续保存其他部分的内容,例如红色部分就是其他部分的保存操作。

  例如工艺过程是一个列表数据,我们在保存的时候是需要指定行列的属性进行操作,而且我们添加一个Seq的序列号,这样是用来保存内容的顺序,这样加载的时候,我们就按照这个循序进行加载显示,否则会出现问题。 

  其中GetProcess函数,这个就是一个列表中查找对应顺序的内容,如果有,那么我们需要更新这个对应顺序的内容,否则我们认为它是新的数据,这样就新增到数据库中,所以最后用了InserUpdate就是这个道理。其中GetProcess函数逻辑代码如下所示。

  另外有一点是需要注意的是有些单元格是合并列的,所以它的行列号一定要注意,因为有些地方可能需要跳行。

  5、Excel表格的数据打印及导出。

  对于使用Farpoint Spread的空间,我们能够非常方便地对里面的内容进行打印或者导出Excel,重要的是代码不繁琐,如下所示。

  我们导出的效果和界面显示的效果基本上一致的,而且图片等特殊的格式,也是正常保留在Excel里面,从感觉上来说是非常的不错的。

  那么在最后我们附上这个系统的一些截图作为补充了解。

到这里,我们基本上是介绍完了利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入的内容了,在上文我们通过了五个部分来介绍的,一是类似Excel的列表总体界面设计的基本内容,二是下拉列表的绑定,三是如何构造界面自定义录入,四是数据的显示和保存,五是Excel表格的数据打印及导出。

详解如何利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入的更多相关文章

  1. 调用ocx ActiveX控件详解(做一个简单的ocx控件)

    背景 最近做的项目都和插件有关,就是在页面中调用插件的方法,然后进行操作. 插件就是ocx ActiveX控件,具体的说明可以自己去了解一下,在这里就不做赘述. 具体调用方式很简单: 1.在页面中写一 ...

  2. Spread.NET 表格控件 V12.0 Update2 发布更新

    Spread.NET表格控件V12.0 Update 2 已经正式发布,本次发布主要针对WinForm平台下客户反馈的产品使用功能进行优化,并修复了已知问题,具体修复情况见下方说明. Spread.N ...

  3. 【案例分享】在 React 框架中使用 SpreadJS 纯前端表格控件

    [案例分享]在 React 框架中使用 SpreadJS 纯前端表格控件 本期葡萄城公开课,将由国电联合动力技术有限公司,资深前端开发工程师——李林慧女士,与大家在线分享“在 React 框架中使用 ...

  4. QTableView表格控件区域选择-自绘选择区域

    目录 一.开心一刻 二.概述 三.效果展示 四.实现思路 1.绘制区域 2.绘制边框 3.绘制 五.相关文章 原文链接:QTableView表格控件区域选择-自绘选择区域 一.开心一刻 陪完客户回到家 ...

  5. Flutter 分页功能表格控件

    老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来. PaginatedDataTable PaginatedDataTable是一个带分页功能的DataTabl ...

  6. 【转】dd命令详解及利用dd测试磁盘性能

    dd命令详解及利用dd测试磁盘性能   linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [op ...

  7. Spread.NET 表格控件 V12.1 正式发布

    Spread.NET 表格控件 V12.1 正式发布 加入动态数组,让公式运算更具效率 Spread.NET 是一个在功能和布局上与 Excel 高度类似的 .NET表格控件,目前已广泛应用于财务.预 ...

  8. 基于纯前端类Excel表格控件实现在线损益表应用

    财务报表也称对外会计报表,是会计主体对外提供的反映企业或预算单位一定时期资金.利润状况的会计报表,由资产负债表.损益表.现金流量表或财务状况变动表.附表和附注构成.财务报表是财务报告的主要部分,不包括 ...

  9. C# DatrgridView表格控件的一些用法

    public class useDatrgrivView { string conn = null; string sqlComm = null; DataSet das = null; DataGr ...

随机推荐

  1. Rhino-- JavaScript

    Rhino是JDK1.6里自带的一个Javascript Engine,不过他的书写风格好像有点不是很一样. importPackage(Packages.groovy.util); var o = ...

  2. [Groovy]static typing

    一般想到Groovy是JVM上的动态语言,都不知道它还有Static Typeing的功能 import groovy.transform.TypeChecked void someMethod() ...

  3. Mybatis学习笔记(六) —— 动态sql

    通过mybatis提供的各种标签方法实现动态拼接sql. 需求:根据性别和名字查询用户 查询sql: SELECT id, username, birthday, sex, address FROM ...

  4. java的Spring学习1--spring引用及属性(setter,getter)注入

    1.目录结构 项目->src->main->java->com.test.ppmoney 设置java文件夹为代码  在Project Structure 里的 Modules ...

  5. WIN2008R2 asp.net core的配置

    配置IIS Windows Server上通过“添加角色和功能”,桌面Windows上通过“启用和关闭Windows功能”来安装和配置IIS.确保勾选Web服务和“IIS 管理控制台”: Window ...

  6. sql replace()函数的用法

    replace()函数的用法: replace('带操作的字符串','被换掉的内容'[要换的内容,可写可不写默认为null]) 先上一张图 下面我门对jxid进行操作: select replace( ...

  7. Python练习六十:网页分析,找出里面的正文与链接

    网页分析,找出里面的正文与链接 代码如下: from urllib import request from bs4 import BeautifulSoup request = request.url ...

  8. 创建有关hbase数据库的项目时所遇到的问题

    1.在以前使用其他数据库时,经常会使用id自增来做主键,但是hbase数据库中不知道怎么来设置自增主键,所以我打算不要id自增主键.然后删除原来的表,重新创建表. 删除表语句: 用drop命令可以删除 ...

  9. java——删除链表中等于给定值的所有元素

    class ListNode{ int val ; ListNode next; public ListNode(int x) { val = x; } public ListNode(int[] a ...

  10. vue 的watch用法

    参考转自https://www.imooc.com/article/details/id/28187 类型:{ [key: string]: string | Function | Object | ...