UltraGrid操作.docx
《UltraGrid操作.docx》由会员分享,可在线阅读,更多相关《UltraGrid操作.docx(68页珍藏版)》请在冰豆网上搜索。
UltraGrid操作
UltraGrid是Infragisticsnetadvanage控件库中提供的一个Windows网格控件,功能强大,完全可以取代VS中提供的GridView控件。
但不知为何,国内介绍它的文章很少。
这玩意功能是相当强大,但其属性设计原理和普通控件不太一样,属性极为复杂,没有手册几乎无法编码。
在此我整理了一些资料,权当推广了。
本是编程用的参考,文笔随意之处望见谅。
kevincheng2008-08-20
参考
提供商首页:
术语
persist 持续化(保存)
property 属性
attribute 特性
setting 设置
Band 数据条带
示例图片
一、UltraGrid的基本概念
UltraGrid的属性设计和一般的控件颇为不同。
理解其设计思想,有助于你从其浩瀚的属性中快速找到你所需要的东西。
在此文中WinGrid,UltraGrid,UltraWinGrid是同一个东西。
WinGrid
是一个可展示层级数据的网格控件
数据源实现IList或ITypedList接口就可以展示(但不一定可以增删)
可展现具有层级关系的数据,如customers-orders-orderdetails
WinGrid功能:
·排序
·过滤
·统计
·行列大小调整
·冻结列和冻结行
·列托拽调整位置
·列互换位置
·分割视图
·Outlook风格的BroupBy功能(用户可将列拖到分组栏中对数据进行分组)
·卡片视图
·数据行的自定义布局
·单元格可使用多种编辑控件
·导出到Excel
·打印
·其它InfragisticsPresentationLayerFramework的公共特性,如:
Apperances,DrawFilters,CreationFilters
WinGrid数据条带和层级数据
UltraGrid可表现具有层级关系的数据
每个层级的数据用一个band(数据条带)来描述
每个band具有若干的column和row,类似DataTable
层级间的关系用外键关联来描述
WinGrid的外观样式方案
(1)使用Appearance对象控制控件的外观和样式
设置WinGrid控件的外观
·并不直接设置其字体背景颜色等属性
·而是创建或者选择现有的Appearance对象(类似Web的cssclass样式)
·该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设置,后者会覆盖前者
//例:
默认只能单行选择,而ordersband允许选择多行
usingInfragistics.Win.UltraWinGrid;
UltraGrid1.DisplayLayout.Override.SelectTypeRow=SelectType.Single;
UltraGrid1.DisplayLayout.Bands["Orders"].Override.SelectTypeRow=SelectType.Extended;
卡片视图(CardView)
每条记录用一张卡片来展示,类似表单视图
卡片视图的限制
只能展现最底层的band数据,无法再展示其子层的数据
无法增加新记录?
设置方法
grid.Band[0].CardView=true;
grid.Band[0].CardSettings.....样式设置
分组视图(GroupByView)
类似outlook2007,可将列拖到分组栏中,让数据分组展示
操作方法:
grid.DisplayLayout.ViewStyleBand=ViewStyleBand.OutlookGroupBy;
二、UltraGrid设计器操作
UltraWinGridDesigner(UltraGrid设计器项目)
BasicSettings :
DataSchema :
设置绑定列的数据格式
Presets :
从预设中选择一个样式,有三种类型:
(1)仅与外观相关;
(2)仅与行为相关;(3)两者都有
ManagePresets :
预设管理和设置
FeaturePicker :
配置功能。
详见后
AppearanceBrowser :
定制的一些外观样式
BandandColumnSettings :
要展示数据集和列设置
Band[0]-'Band0' :
Columns :
展示列设置:
DataSchema中定义绑定列,非绑定列
ColumnArrangementOverview :
列展示位置设置(类似报表设计器)
ColumnArrangementDesigner :
分两种:
Rowlayout(可用于复杂表头设置),Groupandlevels
ControlSettings :
控件所有的属性设置。
其实上面的所有设置都可以在这里找到,只是层次深不易找。
详见下。
FeaturePicker(UltraGrid功能设置)
AutoFitStyle :
列自动适应宽度
CardView :
卡片视图
ColumnMoving :
列是否可拖动位置
ColumnSizing :
列调整宽度的方式
ColumnSwapping :
是否允许列交换位置
EmptyRows :
是否展示空行,空行的样式
Filtering :
列过滤器
FixedHeaders :
冻结列
FixedRows :
冻结行
HeaderClickSortAction :
标题列点击排序方式:
单列排序&多列方式
IDataErrorInfoSupport :
数据错误验证方式
MergedCell :
?
合并单元格
OutlookGroupBy :
OutlookGroup风格(可由用户定制数据分组)
RowSelectors :
行选择符号(一个小箭头)
RowSiziing :
行调整高度的方式
Scrolling :
滚动条样式
Selection :
行列单元格选择方式
Summaries :
统计单元格
Updating :
是否允许数据行增删改
ControlSetting(UltraGrid控件设置·特有属性)
Appearance
Behavior
Data
Design
Layout
DiaplayLayout
AddNewBox
AutoFitStyle
Bands
EnmptyRowSettings
Override
AllowAddNew
AllowDelete
AllowUpdate
RowSizing
ViewStyle :
SingleBand|MultiBand
杂项
常用操作
添加Column:
Start\BasicSettings\DataSchema\ManuallyDefineaSchema\添加Column,命名用数据库中的字段名。
添加ColumnTitle:
BandandColumnSettings\Band[0](手动添加Column后)\Columns\选择列\Header\修改Caption属性
排序:
Picker/Filtring/Allow
分组:
Picker/OutLookGroupBy/Active
编辑:
Picker/Update
多行表头:
ColumnArrangementDesigner/AddGroup/AddLevel/把相应的列拖到组下面,
隐藏列:
ColumnArrangementDesigner/ShowHide
单列不可编辑:
Band[0]/Column/cellactivation设置成NoEdit
单击单元格选择状态:
Band[0]/Column/CellClickAction
单元格编辑控件:
Band[0]/Column/EditorControl
单元格合并:
Band[0]/Column/MergedCell。
。
。
冻结列:
Picker/FixedHeader
三、UltraGrid外观控制
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■Grid ■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
动态转载样式文件
this.ultraGrid1.ApplyPresetFromXml(@"C:
\ProgramFiles\CommonFiles\Infragistics"+
@"\Presets\Win\UltraGridBase\Standard\FlatGreen.xml",true);
存取布局文件(可用这玩意设计报表,动态载入)
this.ultraGrid1.DisplayLayout.SaveAsXml("WinGridLayout.xml");
this.ultraGrid1.DisplayLayout.LoadFromXml(System.IO.Path.Combine(Application.StartupPath,
@"..\..\ExtraFiles\WinGridLayout.xml"));
使用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;
使用操作系统样式
this.ultraGrid1.UseOsThemes=DefaultableBoolean.True;
HotTrack
this.ultraGrid1.DisplayLayout.Override.HotTrackCellAppearance.BackColor=Color.Blue;
this.ultraGrid1.DisplayLayout.Override.HotTrackRowCellAppearance.BackColor=
Color.Yellow;
this.ultraGrid1.DisplayLayout.Override.HotTrackHeaderAppearance.BackColor=
Color.Blue;
this.ultraGrid1.DisplayLayout.Override.HotTrackRowAppearance.ForeColor=
Color.LightGreen;
this.ultraGrid1.DisplayLayout.Override.HotTrackRowSelectorAppearance.BackColor=
Color.Green;
分割滚动视图
设置分割视图(创建SplitBar)
this.ultraGrid1.DisplayLayout.ColScrollRegions[0].Split(0);
this.ultraGrid1.DisplayLayout.RowScrollRegions[0].Split(200);
取消分割视图
this.ultraGrid1.DisplayLayout.MaxColScrollRegions=1;
this.ultraGrid1.DisplayLayout.MaxRowScrollRegions=1;
修改Tab键功能
this.ultraGrid1.DisplayLayout.TabNavigation=TabNavigation.NextControl;
TabletPCInk-Enable
将UltraInkProvider组件拖到窗体上就可以了
编辑状态的输入框右侧会显示一个小笔按钮,点击后就会弹出手写输入框
若要在非TabletPC上使用该功能,需要安装TabletPCSDK
定义和应用外观样式
this.ultraGrid1.DisplayLayout.Appearances.Add("Highlighted");
this.ultraGrid1.DisplayLayout.Appearances["Highlighted"].BackColor=Color.Red;
this.ultraGrid1.DisplayLayout.Appearances["Highlighted"].BackColor=Color.White;
this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance =
this.ultraGrid1.DisplayLayout.Appearances["Highlighted"];
this.ultraGrid1.DisplayLayout.Override.RowSelectorAppearance=
this.ultraGrid1.DisplayLayout.Appearances["Highlighted"];
--------------------------
this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.BackColor=Color.Red;
this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.ForeColor=Color.White;
this.ultraGrid1.DisplayLayout.Override.RowSelectorAppearance.BackColor=Color.Red;
this.ultraGrid1.DisplayLayout.Override.RowSelectorAppearance.ForeColor=Color.White;
GroupBy视图
this.ultraGrid1.DisplayLayout.ViewStyleBand=ViewStyleBand.OutlookGroupBy;
this.ultraGrid1.DisplayLayout.Bands[0].SortedColumns.Add("Country",false,true);
this.ultraGrid1.DisplayLayout.Bands[0].SortedColumns.Add("City",false,true);
-------------------------------------------------------
this.ultraGrid1.DisplayLayout.ViewStyleBand=ViewStyleBand.OutlookGroupBy;
this.ultraGrid1.DisplayLayout.GroupByBox.Style=GroupByBoxStyle.Compact;
this.ultraGrid1.DisplayLayout.GroupByBox.Appearance.BackColor=Color.White;
this.ultraGrid1.DisplayLayout.GroupByBox.Prompt="Draganddropacolumntogroupby
thatcolumn.";
this.ultraGrid1.DisplayLayout.GroupByBox.PromptAppearance.ForeColor=Color.Maroon;
this.ultraGrid1.DisplayLayout.GroupByBox.BorderStyle=UIElementBorderStyle.InsetSoft;
this.ultraGrid1.DisplayLayout.GroupByBox.ButtonBorderStyle=
UIElementBorderStyle.RaisedSoft;
this.ultraGrid1.DisplayLayout.GroupByBox.ShowBandLabels=ShowBandLabels.All;
this.ultraGrid1.DisplayLayout.GroupByBox.BandLabelBorderStyle=
UIElementBorderStyle.Solid;
this.ultraGrid1.DisplayLayout.GroupByBox.BandLabelAppearance.BackColor=Color.DarkBlue;
this.ultraGrid1.DisplayLayout.GroupByBox.BandLabelAppearance.ForeColor=
Color.LightYellow;
this.ultraGrid1.DisplayLay