C1FlexGrid小结(转自http://www.cnblogs.com/C1SupportTeam/archive/2012/12/11/2812316.html)
Posted on 2013-12-29 15:40 吴豪 阅读(2051) 评论(0) 编辑 收藏 举报C1FlexGrid控件来对一个表格格式中的数据进行显示,编辑,组和总结。该表格可以绑定到一个数据源,它可以对自己的数据进行管理。
C1FlexGrid控件有一个包含以下元素的丰富的对象模型:
以下的几个标题将引导你熟悉C1FlexGrid控件的几个主要特点:
行与列
介绍了应该如何设置表格尺寸和布局。
单元格选择
介绍了“当前单元格”和“选择”的概念。
单元格区域
介绍了应该如何将一个单元格的集合作为一个单元来操作。
单元格图像
介绍了应该如何在一个单元格中显示图像。
C1FlexGrid属性组
介绍了一个按功能交叉引用的C1FlexGrid主要属性的图。
设置单元格格式
介绍了应该如何通过设置数字、日期和布尔值的格式,或为一个单个的单元格或一个单元格的集合改变字体、颜色、对齐方式来自定义表格的外观。
编辑单元格
介绍了应该如何实现简单的文字编辑,下拉列表和组合列表,单元格按钮,编辑掩码和数据验证。
合并单元格
介绍了应该如何通过建立“分类”意见来突出数据的关系并更改表格的显示,以便使具有类似内容的单元格合并到一起。
概述和汇总数据
介绍了应该如何将分类汇总添加到表格和如何建立一个树形大纲。
保存,加载,并打印
介绍了你应该如何对一个表格的内容或格式进行保存,并在稍后重新加载,或利用其他应用程序,例如Microsoft Access和Excel,来互换表格的数据。本节还介绍了你应该如何对表格进行打印。
C1FlexGrid属性组
介绍了一个按功能交叉引用的C1FlexGrid主要属性的图。
一个C1FlexGrid控件包括由行和列。行和列的集合受到行和列属性的影响。
当把表格绑定到一个数据源,行和列的数目取决于可用的数据源中的数据有多少。在绑定模式下,你可以使用集合的Count属性将它们设置为任意值。例如,下面的代码将表格的尺寸设置为500行乘以10列:
· Visual Basic
_flex.Rows.Count = 500 _flex.Cols.Count = 10 |
· C#
flex.Rows.Count = 500; _flex.Cols.Count = 10; |
行和列有两个基本类型:固定的和滚动的。(通过Count属性被还原的数值包括了固定的和滚动的单元格)。当用户垂直滚动表格时,固定行停留在表格顶部;而当用户水平滚动表格时,固定列停留在表格左侧。
固定的单元格用于显示行和列的标题信息。
你可以通过使用行和列的集合中“固定的”属性来设置固定的行和列的数目。例如,下面的代码可以创建一个具有两个固定行和无固定列的表格:
· Visual Basic
flex.Rows.Fixed = 1 _flex.Cols.Fixed = 0 |
· C#
flex.Rows.Fixed = 1; _flex.Cols.Fixed = 0; |
行和列的集合也包含了在表格中插入、删除和移动行和列的方法。你可以使用“条目”属性(索引)来访问在每个集合中的独立的各个元素(行和列)。
只要你愿意,你就可以在设计时通过使用C1FlexGrid列编辑器来设置好表格列,而不是靠编写代码来执行这一步操作。有关如何使用C1FlexGrid列编辑器来对列进行编辑的更多详细信息,请参阅C1FlexGrid列编辑器(第25页)。
列的宽度取决于它的“宽度”属性。在设计时,可以在表格中直接设置“宽度”属性,或通过C1FlexGrid列编辑器来进行。在表格中,单击并拖动出现在列标题的右边缘的水平的双箭头可以重新调整列的尺寸。
垂直的虚线显示了表格将会如何被重新调整尺寸。向左拖动指针使列宽变小;将其向右边拖动使列宽变大。当调整的操作完成,列的“宽度”属性将被调整。
在C1FlexGrid列编辑器中或代码中,为列指定“宽度”属性值。有关C1FlexGrid列编辑器的更多详细信息,请参阅“C1FlexGrid列编辑器”(第25页)。下面的代码可以设置第一列到第十列的 “宽度”的属性:
· Visual Basic
_flex.Cols(1).Width = 10 |
· C#
_flex.Cols[1].Width = 10; |
为了防止一个特定的列被调整,请在无论是列任务菜单上,还是列编辑器或代码中,都将这一列的“允许调整”属性设置为“假”。有关列任务菜单的更多详细信息,请参阅“列任务菜单”(第36页)。下面的代码可以将第一列的“允许调整”属性设置为“假”:
· Visual Basic
_flex.Cols(1).AllowResizing = False |
· C#
_flex.Cols[1].AllowResizing = false; |
表格中有一个光标单元格,当表格时是激活的,它会显示一个焦点矩形。当表格是可编辑的,用户可以使用键盘或鼠标来移动这个光标并且编辑单元格的内容。
请注意,Office Visual Styles也会通过高亮显示光标单元格所在的行和列标题,来显明光标单元格的位置。要想了解更多有关设置“视觉样式”的详细信息,请参阅“自定义外观,使用视觉样式”(第165页)。
你可以在代码中通过使用“行与列”属性来获取或设置当前单元格。例如,将任一属性设置为-1,可以隐藏光标。
表格支持扩展选择,单元格的矩形范围由两个对立的角落决定,即光标所在单元格和单元格选择的单元格。
请注意,Office Visual Styles也通过高亮显示选定的单元格所在的行和列的标题来显明了扩展选择的位置。要想了解更多有关设置“视觉样式”的详细信息,请参阅“自定义外观,使用视觉样式”(第165页)。
你可以在代码中通过使用“行选择”和“列选择”属性来获取或设置单元格选择,或通过使用“选择”的方法也可以。
注意:当光标单元格变化了,该“选择”会自动复位。要在代码中创建扩展选项,无论是通过在“行选择”和“列选择”之前先设置“行与列”或直接使用“选择”的方法都可以。
“选择”的外观是由以下属性决定的:
· 定焦矩形决定了焦点矩形的类型是为了表明光标单元格而绘制的。
· 高亮显示决定了什么时候该“选择”应该被突出显示(通常是,当该控件有一个突出的重点时,或者从不)。
· 高亮和定焦都是决定了“选择”的外观的单元格样式(字体,颜色和边框)。
可供选择的类型是由“选择模式”的属性决定的。在默认情况下,表格支持常规的范围选择。你可以修改此行为来防止扩展选择,或者来按行、按列,或在列表框模式下进行选择(“列表框模式”可以允许你来选择个别行)。
当使用列表框选择模式时,你可以通过使用“选择”属性来获取或设置个别行的选择状态。你还可以通过使用“选择”属性来恢复选定的行的集合。例如,下面的代码可以选择符合一个条件的所有行:
· Visual Basic
' 在“销售”列中选择多于8000名销售的所有行。 _flex.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.ListBox Dim index As Integer For index = _flex.Rows.Fixed To _flex.Rows.Count - 1 If Val(_flex(index, "Sales")) > 80000 Then _flex.Rows(index).Selected = True End If Next Console.WriteLine("There are now {0} rows selected", _flex.Rows.Selected.Count) |
· C#
// 在“销售”列中选择多于8000名销售的所有行。 _flex.SelectionMode = SelectionModeEnum.ListBox; for (int index = _flex.Rows.Fixed ; index < _flex.Rows.Count; index++) { if (Microsoft.VisualBasic.Conversion.Val(System.Runtime.CompilerServices.Runti meHelpers.GetObjectValue(_flex[index, "Sales"])) > 80000) { _flex.Rows[index].Selected = true; } } Console.WriteLine("There are now {0} rows selected", _flex.Rows.Selected.Count); |
“单元格区域”对象可以使你将单元格的任意组合作为一个简单的单元来工作。例如,下面的代码创建了一个“单元格区域”的对象,清除了范围内的数据,并赋予了它一个自定义样式:
· Visual Basic
Dim rg As CellRange = _flex.GetCellRange(3, 3, 10, 10) rg.Data = Nothing rg.Style = _flex.Styles("MyRangeStyle") |
· C#
CellRange rg = _flex.GetCellRange(3, 3, 10, 10); rg.Data = null; rg.Style = _flex.Styles["MyRangeStyle"]; |
“单元格区域”的对象具有可以恢复区域样式的StyleNew的属性, 如果存在一个,或创建了一个新的,将其分配给该区域并返回它。在你不需要对格式进行全面控制的情况下,此属性是很方便的。例如,如果你想要做的是给这个区域设定一个红色的背景,你可以编写如下代码来实现:
· Visual Basic
Dim rg As CellRange = _flex.GetCellRange(3, 3, 10, 10) rg.StyleNew.BackColor = Color.Red |
· C#
CellRange rg = _flex.GetCellRange(3, 3, 10, 10); rg.StyleNew.BackColor = Color.Red; |
每个表格内的单元格除了在单元格中存储数据以外还都可以显示图像。这可以通过两种方式来实现:
· 你可以通过使用“设置单元格图像”的方法,来将一个“图像”对象分配到一个单元格。这种方法可以允许你指定任意图像到每个单元格,并且当图像与单元格中的数据没有什么关系时这是很有用的。例如,你可能想使用图片作为一项指标来表明单元格中的数据是无效的。
· 你可以将一个“图像映射”指定到一列,表格就会将单元格中的数据自动映射到一个相应的图像。当图像包含了代表性的数据的情况下,这种方法是很有用的。例如,图像可能含有表示产品类型的图标。