C1FlexGridView如何使用手机剪贴板板

如下图所示我们需要给第一列產生新值。

在这个示例中我们的ComboBox的数据源是一个用户自定义列,叫做CountryDetail

在示例中,用户可以选择和数据源相关的状态这个界面控件是個ComboBox。

过程描述:设置CountryDetails作为ComboBox数据源然后保存选择值到对象的空属性。

每一行都将展示同第一列country相关的值

如果你对C1FlexGrid感兴趣,请到我们的下載最新版本:

如果你有疑问可以到获得技术支持:

功能描述:上述财产的ComboList确保单元格的值是从名单中挑选由用户选择的值转换成列的适当类型和存储在网格,完全一样如果用户已输入的值。
在许多情况下细胞能够承担来自明确列出的值,但是你想显示一个用户的实际价值的版本例如,如果一个列包含的产品代码您可能要存储的代码,但显示的產品名称来代替
这是通过的DataMap财产。此属性包含一个引用到的IDictionary对象之间建立什么是存储在网格中什么是可见的用户(IDictionary接口是boList = "...";

此代码设置列,以便用户可以点击一个按钮然后从对话框中的颜色。下一步是处理的代码单元格按钮上点击:

请注意按钮标记为“1”“2”,和“*”的左上角单元格点击这些按钮会导致整个树折叠或展开相应的水平。还要注意更广泛的压痕线和连接树(“安妮Dodsworth的”)以及节点行定期行

功能描述:到目前为止,我们已经覆盖了节点树行和大纲创作为了使真正有用的轮廓,但是节点行应包括摘要它们包含的数据信息。

如果您创建一个轮廓树使用C1FlexGrid.Subtotal方法然后分类汇总会自动添加。这将在后面的章节所述

如果你创建轮廓树使用Rows.InsertNode方法如上所述,那么伱应该直接使用到节点行的C1FlexGrid.Aggregate方法来计算每一组行并插入结果的汇总

该AddSubtotals方法扫描为节点的网格行的行寻找。当所期望的水平节点行被发现该方法使用GetCellRange方法检索节点的子行。然后它使用C1FlexGrid.Aggregate方法来计算在整个范围内对目标列中的值的总和。对总呼叫包括ExcludeNodes标志以避免重复计算,现有节点一旦经过计算小计,它被分配到节点行的细胞通常_flex [行列]索引。
请注意这并不会影响以任何方式的数据源,因为节点行不綁定到数据

还要注意,该方法可以用来添加到每个节点的多个总计行在这个例子中,我们将增加的数量和扩展价格列总数除了金钱,你可以添加如平均最高,最低等其他聚合

现在我们可以使用此方法来创建节点行,轮廓树一个完整的轮廓和小计: 

如果您运行该項目现在,你会看到一个与该节目的总数量和每个国家和城市节点销售金额排树这是非常好的,但有一个小问题如果展开的节点任何荇,你会看到许多重复的值根据给定的城市节点的所有行具有相同的国家和城市:

这是正确的,但它也是一个屏幕房地产的浪费消除這些重复的值很容易,你需要做的就是设置正在分组到零列的宽度当你这样做,但是你要记得设置网格的AllowMerging属性节点,因此分配给该节點行的文本将波及到可见列 (另一个选择是将文本的节点分配到第一个可见列,但合并通常是更好的解决方案因为它可以让你用更长嘚时间节点行文本)。

下面是修改后的代码和最后的结果: 

功能描述:我们提到过你也可以使用C1FlexGrid创建树的C1FlexGrid.Subtotal方法。 TheSubtotal方法执行的GroupBy和AddSubtotals方法上述楿同的任务除非它在一个单一的步骤,因此这两种东西多一点效率

下面显示了如何使用分类汇总方法的代码来完成相同的事情,我们過了只是快一点,没有使用任何辅助方法做的:

分类汇总的方法是非常方便和灵活它有一个重载允许您指定的列进行分组并总计由索引或名称,是否包含列标题的节点中插入的是如何进行分组和数量等。下面摘要介绍了重载版本: 

这个版本的方法只需要一个聚合类型莋为参数它是有用的,只有去除然后再插入新的现有的分类汇总。在这种情况下aggType参数设置为AggregateEnum.Clear。

这些是最常用的重载该参数是要插叺的聚合类型和对本集团的总列上。被引用的列可以通过索引或名称后者是一个我们在上面的例子使用。

这些重载标题添加一个额外的參数标题参数确定被添加到新节点的行被分组确定价值的文本。默认情况下该值被分为上显示出来,所以如果你是按国家分组时节點的行会显示“阿根廷”,“巴西”等等。如果您设置标题参数为字符串如“国家:{0}”,则节点的行会显示“国家:阿根廷”代替

這些重载groupBy分成两个参数:groupFrom和groupTo。默认情况下小计方法插入一个节点,只要行的groupBy或前一列的值更改

例如,如果你行已在“城市”为前行的列值相同但是在“国家”一栏,不同的值然后分类汇总方法假设行应在不同的组,并插入一个新节点即使排在groupBy列的值是相同的这些總量让你重写该行为,并指定时应考虑确定一个组列的范围。

功能描述:Node类提供的方法和可用于创建和管理大纲树属性这些方法和属性很多是基于标准的TreeView的对象模型,因此他们应该最熟悉的开发人员

要获得一个节点对象,你可以:

或者你可以为现有的检索使用行的节點属性行节点:

无论哪种方式一旦你有一个节点对象,你可以对其进行操作使用下列属性和方法:

?等级:获取或设置在树节点级别的夶纲

?数据:获取或设置由Node.Row和Tree.Column定义的单元格的值。

?选中:获取或设置由Node.Row和Tree.Column定义的细胞检查状态

?折叠/展开:获取或设置节点的折叠/展开状态。

您还可以探索大纲结构使用以下方法:

?GetCellRange():获取一个CellRange对象描述了属于此列节点范围。

?儿童:获取此节点下的子节点的數目

?节点:节点阵列获取一个包含此节点的子节点。

?GetNode:获取节点有一个给定的关系到该节点(父,第一个孩子一个兄弟,等)

上述讨论的约束情况下,这里的电网是连接到数据源提供了数据集中。您还可以创建未绑定的情况下树木和轮廓其实有些事情是在這种情况下更简单,因为你可以变成一个节点行通过设置IsNode属性为true任何行

如果格不作承诺,它拥有所有显示的数据你做的事情是不可能嘚,当一个数据源拥有数据例如,你可以移动使用移动方法通过与C1FlexGrid提供TreeNode的样本显示树节点。

使用未绑定的网格节点非常相似在常规使用TreeView控件的节点。

在使用C1FlexGrid的数据绑定时一开始使鼡的是C1FlexGrid.Datasource方法。结果是执行后表格列没有按在列设计器的列名显示。

需要注意的是在使用这个方法时,列设计器中的name属性必须和dataTable中的列洺一致

我要回帖

更多关于 如何使用剪贴板 的文章

 

随机推荐