自定义列和区域的数据绑定

当表单被绑定到一个数据集时,表单中的列就会相继的被分配到数据集的区域上。例如,第一个数据域分配给列A,第二个数据区域分配给列B,等等。你也可以改变分配顺序,将任意域分配给任意列。

默认情况下,绑定的表单继承数据库中列的宽度。如果你想要设置你自己的列宽,你可以在绑定Spread控件之后设置列宽,或者将DataAutoSizeColumns属性设置为false并设置列宽。

如果你将多个Spread控件绑定到了一个单一的数据集,你可以将每一个Spread控件中表单的AutoGenerateColumns属性设置为false,这样Spread控件就不会绑定所有的列。这时你就可以将任意一个Spread控件中的列的DataField属性设置为某一个数据集中的域的名字。这样只有数据集中该列的数据被绑定了这个Spread控件。

以下示例代码把Spread控件绑定到一个数据集,并设置在前四列中使用数据区域。

// Turn off automatic column and field mapping. fpSpread1.Sheets[0].AutoGenerateColumns = false; // Bind the component to the data set. fpSpread1.DataSource = dataSet1; // Set the fields for the columns. fpSpread1.Sheets[0].Columns[0].DataField = "Description"; fpSpread1.Sheets[0].Columns[1].DataField = "ID"; fpSpread1.Sheets[0].Columns[2].DataField = "LeadTime"; fpSpread1.Sheets[0].Columns[3].DataField = "Price"; 添加行或列到已绑定的表单

把未绑定的行添加到已绑定的表单中

当你将表单绑定到一个数据集时,你可能想要添加一个未绑定的行保存一些额外的数据。

下面的图表中展示了某个Spread控件中的一个表单,它的数据来自一个数据集;表单的底端有一行未绑定的行,计算表单中数据的平均值。

下面的示例代码把Spread控件绑定到了一个数据集,并添加了一个未绑定行:

// Bind the component to the data set. fpSpread1.DataSource = dbDataSet; // Add an unbound row. fpSpread1.Sheets[0].AddUnboundRows(20, 1);

把一个未绑定列添加到一个绑定表单中

当你将表单绑定到一个数据集时,你可能想要添加一个未绑定的列保存一些额外的数据。

下面的图表中展示了某个Spread控件中的一个表单,它的数据来自一个数据集;表单的底端有一行未绑定的行,计算了表单中数据的平均值。

下面的示例代码把Spread控件绑定到一个数据集,并添加了一个未绑定行:

// Bind the component to the data set. fpSpread1.DataSource = dbDataSet; // Add an unbound row. fpSpread1.Sheets[0].AddUnboundRows(20, 1); 将Spread的单元格区域绑定到外部数据源

你可以将Spread控件中一定范围内的单元格绑定到外部的数据源上。为了达到这个目的,你可以使用SpreadDataBindingAdpater类在Spread控件和数据源之间创建一个连接,并使用MapperInfo类把单元格区域与数据源中的区域匹配起来。

绑定单元格区域之后,如果你在数据源中删除或增加了一列,Spread控件并不会自动进行更新。

Spread控件中的数据源和单元格区域是由MapperInfo类控制的。它们之间通过行同步进行相互同步。如果用户在单元格区域中添加或者删除了任意行,这将会影响到数据源中的数据,反之亦然。如果用户在现有的单元格区域下面添加了新的一行,那么单元格区域会扩展一行,并对MapperInfo类和数据源进行扩展,反之亦然。如果新添加的行位于绑定区域的外面,那么它不会被添加到绑定区域中。

默认情况下,Spread控件会尝试将外部数据源中的数据类型与它所包含的单元格类型进行匹配。你可以将DataAutoCellTypes属性设置为false来阻止以上的默认行为。下面的表格展示了我们所使用的基于数据类型的单元格类型:

数据类型

单元格类型

布尔值

复选单元格

日期时间

日期时间单元格

双精度浮点值,单精度浮点值,十进制值

数值单元格

16位整型,32位整型,等等。

数据单元格

字符串

文本单元格

其它

通用单元格

想要了解更多信息,请参考API参考资料中的SpreadDataBindingAdapter类以及MapperInfo类。

下面的示例代码将一个单一的单元格区域绑定到一个数据源上:

FarPoint.Win.Spread.Data.SpreadDataBindingAdapter data = new FarPoint.Win.Spread.Data.SpreadDataBindingAdapter(); data.DataSource = dt; data.Spread = fpSpread1; data.SheetName = "Sheet1"; data.MapperInfo = new FarPoint.Win.Spread.Data.MapperInfo(3, 2, 1, 1); data.FillSpreadDataByDataSource(); 将Spread中的单元格区域作为外部控件的数据源

你可以将Spread控件中一定范围内的单元格绑定到外部的数据源上。为了达到这个目的,你可以使用SpreadDataBindingAdpater类在Spread控件和数据源之间创建一个连接,并使用MapperInfo类把单元格区域与数据源中的区域匹配起来。

绑定单元格区域之后,如果你在数据源中删除或增加了一列,Spread控件并不会自动进行更新。

Spread控件中的数据源和单元格区域是由MapperInfo类控制的。它们之间通过行同步进行相互同步。如果用户在单元格区域中添加或者删除了任意行,这将会影响到数据源中的数据,反之亦然。如果用户在现有的单元格区域下面添加了新的一行,那么单元格区域会扩展一行,并对MapperInfo类和数据源进行扩展,反之亦然。如果新添加的行位于绑定区域的外面,那么它不会被添加到绑定区域中。

默认情况下,Spread控件会尝试将外部数据源中的数据类型与它所包含的单元格类型进行匹配。你可以将DataAutoCellTypes属性设置为false来阻止以上的默认行为。下面的表格展示了我们所使用的基于数据类型的单元格类型:

数据类型

单元格类型

布尔值

复选单元格

日期时间

日期时间单元格

双精度浮点值,单精度浮点值,十进制值

数值单元格

16位整型,32位整型,等等。

数据单元格

字符串

文本单元格

其它

通用单元格

想要了解更多信息,请参考API参考资料中的SpreadDataBindingAdapter类以及MapperInfo类。

下面的示例代码将一个单一的单元格区域绑定到一个数据源上。

FarPoint.Win.Spread.Data.SpreadDataBindingAdapter data = new FarPoint.Win.Spread.Data.SpreadDataBindingAdapter(); data.DataSource = dt; data.Spread = fpSpread1; data.SheetName = "Sheet1"; data.MapperInfo = new FarPoint.Win.Spread.Data.MapperInfo(3, 2, 1, 1); data.FillSpreadDataByDataSource(); 使用层次化的数据显示

表单能够以层次化的视图显示 与其相关的数据,如相关数据库中的数据。下面是一个使用层次化视图显示数据库中数据的示例,其中的数据库引用了指导手册中的数据库。用户可以通过点击展开和折叠图表(加号和减号标识)展开或者折叠层次组织的层级。

想要以层次化的方式显示数据,首先需要创建一个数据集用来保存相关的数据;然后定义数据之间的相互关系; 最后设置Spread控件,以你想要的方式显示数据。你可以自定义单元格类型,颜色,标题,以及子表单的其它方面的外观设置。

你可以绑定到一个层次化的集合上。

如果你要为表单设置皮肤,你必须把皮肤应用到父表单和所有的子表单上。

你可以设置层次结构的显示方式,Spread会将其当做父表单的子视图。使用SheetView类的属性,你可以获取更多有关子视图的信息。

  • ChildRelationCount
  • GetChildDataModel
  • GetChildRelation
  • GetChildSheets
  • GetChildView
  • GetChildVisible
  • ParentRelationName

当最终用户展开或者折叠子表单时,你能够捕捉到这个事件。想要了解更多信息,请参考 Expand 事件和ChildViewCreated事件。你可以使用GetRowExpandable和 SetRowExpandable方法决定行是否是展开的。

如果你需要设置子表单的属性,最好是在ChildWorkbookCreated事件中放置这些修改属性的代码。当创建一个新的子表单时,该事件就会被触发。ChildViewCreated事件是在子表单创建后被触发的,但子表单直到最后才被创建好,并且只有子表单在控件中可见时它会被创建(这样布局的计算才会更快)。

下面的示例代码将Spread控件绑定到一个级联集合上。

public class Score { private string classname; private string grade; public string ClassName { get { return classname; } set { classname = value; } } public string Grade { get { return grade; } set { grade = value; } } } public class Student { private string name; private string id; private ArrayList score = new ArrayList(); public string Name { get { return name; } set { name = value; } } public string Id { get { return id; } set { id = value; } } public ArrayList Score { get { return score; } } } private void Form1_Load(object sender, System.EventArgs e) { ArrayList list = new ArrayList(); Student s = new Student(); s.Name = "John Smith"; s.Id = "100001"; Score sc = new Score(); sc.ClassName = "math"; sc.Grade = "A"; s.Score.Add(sc); sc = new Score(); sc.ClassName = "English"; sc.Grade = "A"; s.Score.Add(sc); list.Add(s); s = new Student(); s.Name = "David Black"; s.Id = "100002"; sc = new Score(); sc.ClassName = "math"; sc.Grade = "B"; s.Score.Add(sc); sc = new Score(); sc.ClassName = "English"; sc.Grade = "A"; s.Score.Add(sc); list.Add(s); fpSpread1_Sheet1.DataSource = list; }

Spread for Windows Forms 5.0 中文版下载地址

附:Spread for Windows Forms高级主题系列文章

Spread for Windows Forms高级主题(1)---底层模型

Spread for Windows Forms高级主题(2)---理解单元格类型

Spread for Windows Forms高级主题(3)---理解单元格的编辑模式

Spread for Windows Forms高级主题(4)---自定义用户交互

Spread for Windows Forms高级主题(5)---数据处理

Spread for Windows Forms高级主题(6)---数据绑定管理相关推荐

  1. Spread for Windows Forms高级主题(7)---自定义打印的外观

    2019独角兽企业重金招聘Python工程师标准>>> 表单打印的多个部分都可以进行自定义,大多数的自定义选项存在于PrintInfo对象中.大多数打印选项是在PrintInfo对象 ...

  2. Spread for Windows Forms高级主题(3)---单元格的编辑模式

    理解单元格的编辑模式 通常情况下,当终端用户双击单元格时,编辑控件将允许用户在该单元格中输入内容.在一个单元格中编辑的能力被称为编辑模式.一些属性和方法可以用来自定义编辑模式的使用. 当一个单元格处于 ...

  3. Spread for Windows Forms高级主题(5)---数据处理

    2019独角兽企业重金招聘Python工程师标准>>> 使用表单的API处理数据 你可以将数据以有格式或无格式字符串或者数据对象的形式填充到单元格中.将数据填充到单元格的最好方式取决 ...

  4. Spread for Windows Forms高级主题(4)---自定义用户交互

    你可以从多方面自定义用户界面来自定义用户与Spread控件的交互方式.同时,你还可以自定义如何处理用户交互方式. 设置允许用户进行的操作 下面的列表总结了通过控件的数据区域,你可以授权用户进行的操作( ...

  5. farpoint支持python_FarPoint Spread for Windows Forms

    Spread是.NET平台上功能较为强大的表格控件,可以支持多种数据库的数据,提供能满足各行业需求的328种计算公式,并且对Excel各版本的文件格式有很好的兼容性.从COM版本开始,Spread一直 ...

  6. Spread for Windows Forms快速入门(10)---绑定到数据库

    下面的教程将带你创建一个工程, 并将Spread控件绑定到一个数据库. 在这个教程中,主要的步骤为: 1. 将Spread添加到一个数据绑定工程中 2. 设置数据库连接 3. 指定要使用的数据 4. ...

  7. Spread for Windows Forms快速入门(2)---设置Spread表单

    让我们从设置Spread的大小和表单的外观开始学习如何定制Spread,这些操作通常放在Form的构造函数中进行,在InitializeComponent()之后调用. 自定义控件的大小 你可以设置S ...

  8. Spread for Windows Forms 7新功能使用指南

    2019独角兽企业重金招聘Python工程师标准>>> 表格控件 Spread for WinForms 表格控件兼容Excel的强大功能,并将其嵌入到您的应用系统中.完备的Exce ...

  9. Spread for Windows Forms快速入门(1)---开始使用Spread

    2019独角兽企业重金招聘Python工程师标准>>> 前言 Spread for Windows Forms是功能最为强大的表格控件,拥有灵活开放的对象模型和50,000个以上的A ...

最新文章

  1. 华为秘密作战计划曝光,重注研发AI芯片挑战英伟达,轮值董事长挂帅
  2. TabLayout-Android M新控件
  3. oracle11G在linux环境下的卸载操作
  4. java slf4j日志级别_java - 在slf4j中设置运行时消息的日志级别 - 堆栈内存溢出
  5. Panda处理文本和时序数据?首选向量化
  6. VS中代码格式及样式的统一处理
  7. zabbix client安装配置执行
  8. 求最大公约数---字符串并集---交集代码小结
  9. jqgrid 行选中multiboxonly属性说明
  10. 微信小程序消息推送(java)
  11. LBP原理介绍以及算法实现
  12. VS2019下cmake项目:利用ELAS方法计算双目视差
  13. 社会工程学之从微信取名看性格
  14. 网友抽中淘宝大奖,怎料小丑竟是自己
  15. 理解virt、res、shr之间的关系(linux系统篇)
  16. 陶渊明笔下的桃花源就在此,连郭沫若都赞不绝口
  17. LineRenderer组件
  18. sda, sdb, sdc, sda1, sda2在Linux中都代表什么
  19. 微博指定日期舆情数据爬虫获取—基于中文金融词典(python)
  20. STM32上手-STWingSKIT_BC28学习笔记(一)环境搭建和LED灯点亮

热门文章

  1. [过年菜谱之]千张春笋蒸酱鸭
  2. 程序员合同日期不到想辞职_辞职报告怎么写最简单?写清楚理由和时间,签上姓名就OK了...
  3. 山师计算机二级考试科目,山师计算机应用技术考试试题与答案.doc
  4. python插值算法实现_图像插值算法Opencv+python实现
  5. 服务器上传至云系统,上传至云服务器命令
  6. java用户登录记住密码_java项目中登陆时记住密码
  7. 显示器与服务器连接线叫什么,连接显示器和主机的线叫什么
  8. python写crm_Python CRM项目八
  9. 深度搜索和广度搜索领接表实现_算法基础04-深度优先搜索、广度优先搜索、二分查找、贪心算法...
  10. python与mysql数据库如何连接_如何连接Python中的MySQL数据库?