窗体顶端
myl0197
电脑是我的老婆,编程是我的灵魂,代码是我的语言,按键是我在歌唱。(转贴)
∙ 博客园
∙ 社区
∙ 首页
∙ 新随笔
∙ 联系
∙ 管理
∙ 订阅
随笔- 19 文章- 0 评论- 9
Infragistics netadvantage UltraGrid (UltraWinGrid) 编程手记(转载Kevin Cheng's Yard)
UltraGrid 是Infragistics netadvanage 控件库中提供的一个Windows 网格控件,功能强大,完全可以取代VS 中提供的 GridView控件。但不知为何,国内介绍它的文章很少。这玩意功能是相当强大,但其属性设计原理和普通控件不太一样,属性极为复杂,没有手册几乎无法编码。在此我整理了一些资料,权当推广了。本是编程用的参考,文笔随意之处望见谅。kevin cheng 2008-08-20
参考
提供商首页:/
法泉寺
术语
persist 持续化(保存)
property 属性
attribute 特性
tting 设置经费
Band 数据条带
示例图片
一、UltraGrid 的基本概念
UltraGrid的属性设计和一般的控件颇为不同。理解其设计思想,有助于你从其浩瀚的属性中快速找到你所需要的东西。在此文中 WinGrid, UltraGrid, UltraWinGrid 是同一个东西。
WinGrid
是一个可展示层级数据的网格控件
数据源实现 IList 或 ITypedList 接口就可以展示(但不一定可以增删)
可展现具有层级关系的数据,如 customers - orders - order details
WinGrid 功能:
· 排序
· 过滤
· 统计
· 行列大小调整
· 冻结列和冻结行
· 列托拽调整位置
· 列互换位置
· 分割视图
· Outlook风格的BroupBy功能(用户可将列拖到分组栏中对数据进行分组)
· 卡片视图
· 数据行的自定义布局
· 单元格可使用多种编辑控件
· 导出到Excel
· 打印
· 其它Infragistics Prentation Layer Framework 的公共特性,如:周祖Apperances, DrawFilters, CreationFilters
WinGrid 数据条带和层级数据
UltraGrid 可表现具有层级关系的数据
每个层级的数据用一个 band(数据条带)来描述
每个 band 具有若干的 column 和 row,类似 DataTable
层级间的关系用外键关联来描述
WinGrid 的外观样式方案
(1)使用 Appearance 对象控制控件的外观和样式
设置 WinGrid 控件的外观
· 并不直接设置其字体背景颜色等属性
· 而是创建或者选择现有的 Appearance 对象(类似Web的css class样式)
· 该 Appearance 对象拥有多种格式相关的属性,如对齐方式、字体、颜色、图像和alpha融合信息
该方式有以下好处:
· 缩减了代码的数量
· 便于控制统一的外观,只需要改 Appearance 对象就可以了
· 对于 Grid 这样具有众多子元素的控件,使用此方式设置外观可有效减少内存消耗
(2)其布局和外观是可持续化保存的
UltraGrid.DisplayLayout 属性(UltraGridLayout类)作为所有可持续化保存的特性和对象的容器
调用该对象的 Load(), Save(), LoadFromXml(), SaveAsXml() 函数可存取外观控制
由于大部分UltraGrid的设置都可以持续化,所以大部分的功能都是通过UltraGridLayout扫雷攻略对象进行设置的
(3)样式是可从上级控件继承和重载的
若控件设置其 Appearance 为 Default,该控件将会继承其父控件的样式设置(而不是什么缺省值)
如缺省状态下,cell 使用row的背景色,而row使用band的背景色
Band 对象默认继承上级对象的样式,而使用Override 属性(UltraGridOverride 类)来设置其特殊属性
WinGrid 决定绘制一个对象的外观和行为时
· 先检查该对象的Override属性
· 若该属性内的值被明确修改(非Default),则使用该值
· 否则使用上级对象相应的值(Default)
大部分的属性即可以直接在WinGrid互联网广告设置,也可以在Band牛排简笔画设置,后者会覆盖前者
// 例:默认只能单行选择,而 orders band 允许选择多行
using Infragistics.Win.UltraWinGrid;
UltraGrid1.DisplayLayout.Override.SelectTypeRow = SelectType.Single;
UltraGrid1.DisplayLayout.Bands["Orders"].Override.SelectTypeRow = SelectType.Extended;
卡片视图(Card View)
每条记录用一张卡片来展示,类似表单视图
卡片视图的限制
只能展现最底层的band数据,无法再展示其子层的数据古代的时间
无法增加新记录?
设置方法
grid.Band[0].CardView = true;
grid.Band[0]. 样式设置
分组视图(GroupBy View)
类似outlook 2007,可将列拖到分组栏中,让数据分组展示
操作方法:
grid.DisplayLayout.ViewStyleBand = ViewStyleBand.OutlookGroupBy;
二、 UltraGrid 设计器操作
UltraWinGrid Designer(UltraGrid设计器项目)
Basic Settings :
Data Schema : 设置绑定列的数据格式
Prets : 从预设中选择一个样式,有三种类型:(1)仅与外观相关;(2)仅与行为相关;(3)两者都有
Manage Prets : 预设管理和设置
Feature Picker : 配置功能。详见后
Appearance Browr : 定制的一些外观样式
Band and Column Settings : 要展示数据集和列设置
Band[0] - 'Band 0' :
Columns : 展示列设置:Data Schema中定义绑定列,非绑定列
Column Arrangement Overview : 列展示位置设置(类似报表设计器)
Column Arrangement Designer : 分两种:Row layout(可用于复杂表头设置), Group and levels
Control Settings : 控件所有的属性设置。其实上面的所有设置都可以在这里找到,只是层次深不易找。详见下。
Feature Picker(UltraGrid功能设置)
AutoFit Style : 列自动适应宽度
CardView : 卡片视图
Column Moving : 列是否可拖动位置
Column Sizing : 列调整宽度的方式
Column Swapping : 是否允许列交换位置
Empty Rows : 是否展示空行,空行的样式
Filtering : 列过滤器
Fixed Headers : 冻结列
Fixed Rows : 冻结行
Header Click Sort Action : 标题列点击排序方式:单列排序 & 多列方式
IDataErrorInfo Support : 数据错误验证方式
Merged Cell : ?合并单元格
Outlook Group By : Outlook Group 风格(可由用户定制数据分组)
Row Selectors : 行选择符号(一个小箭头)
Row Siziing : 行调整高度的方式
Scrolling : 滚动条样式
Selection : 行列单元格选择方式
Summaries : 统计单元格
Updating : 是否允许数据行增删改
Control Setting(UltraGrid控件设置·特有属性)
Appearance
Behavior
Data
Design
Layout
DiaplayLayout
AddNewBox
AutoFitStyle
Bands
EnmptyRowSettings
Override
AllowAddNew
AllowDelete
AllowUpdate
RowSizing
ViewStyle : SingleBand | MultiBand
杂项
常用操作
添加Column: Start\Basic Settings\Data Schema\Manually Define a Schema\添加Column,命名用数据库中的字段名。
添加Column Title: Band and Column Settings\Band [0](手动添加Column后)\Columns\选择列\Header\修改Caption属性
排序:Picker/Filtring/Allow
分组:Picker/OutLook GroupBy/Active
编辑:Picker/Update
多行表头:Column Arrangement Designer/Add Group/Add Level/把相应的列拖到组下面,
隐藏列:Column Arrangement Designer/Show Hide
单列不可编辑:Band[0]/Column/cellactivation 设置成NoEdit
单击单元格选择状态:Band[0]/Column/CellClickAction
单元格编辑控件:Band[0]/Column/EditorControl
单元格合并:Band[0]/Column/MergedCell。。。
冻结列:Picker/Fixed Header
三、UltraGrid 外观控制
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■ Grid ■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
动态转载样式文件
this.ultraGrid1.ApplyPretFromXml(@"C:\Program Files\Common Files\Infragistics" +
@"\Prets\Win\UltraGridBa\l", true);
存取布局文件(可用这玩意设计报表,动态载入)
this.ultraGrid1.DisplayLayout.SaveAsXml("l");
this.ultraGrid1.DisplayLayout.LoadFromXml(System.IO.Path.Combine(Application.StartupPath,
@"..\..\l"));
使用Appearance(类似预定义的样式)
this.ultraGrid1.DisplayLayout.Appearances.Add("Highlighted" );
this.ultraGrid1.DisplayLayout.Appearances["Highlighted" ].BackColor = Color.Red;
this.ultraGrid1.DisplayLayout.Appearances["Highlighted" ].BackColor = Color.White; 家校合力
或者直接给预设Appearance赋值
this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.ForeColor = Color.White;