




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UltraGrid 是Infragistics netadvanage 控件库中提供的一个Windows 网格控件,功能强大,完全可以取代VS 中提供的 GridView控件。但不知为何,国内介绍它的文章很少。这玩意功能是相当强大,但其属性设计原理和普通控件不太一样,属性极为复杂,没有手册几乎无法编码。在此我整理了一些资料,权当推广了。本是编程用的参考,文笔随意之处望见谅。kevin cheng 2008-08-20参考 提供商首页:/术语 persist 持续化(保存) property 属性 attribute 特性 setting 设置 Band 数据条带示例图片一、UltraGrid 的基本概念UltraGrid的属性设计和一般的控件颇为不同。理解其设计思想,有助于你从其浩瀚的属性中快速找到你所需要的东西。在此文中 WinGrid, UltraGrid, UltraWinGrid 是同一个东西。WinGrid 是一个可展示层级数据的网格控件 数据源实现 IList 或 ITypedList 接口就可以展示(但不一定可以增删) 可展现具有层级关系的数据,如 customers - orders - order detailsWinGrid 功能: 排序 过滤 统计 行列大小调整 冻结列和冻结行 列托拽调整位置 列互换位置 分割视图 Outlook风格的BroupBy功能(用户可将列拖到分组栏中对数据进行分组) 卡片视图 数据行的自定义布局 单元格可使用多种编辑控件 导出到Excel 打印 其它Infragistics Presentation Layer Framework 的公共特性,如:Apperances, DrawFilters, CreationFiltersWinGrid 数据条带和层级数据 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.BandsOrders.Override.SelectTypeRow = SelectType.Extended;卡片视图(Card View) 每条记录用一张卡片来展示,类似表单视图 卡片视图的限制 只能展现最底层的band数据,无法再展示其子层的数据 无法增加新记录? 设置方法 grid.Band0.CardView = true; grid.Band0.CardSettings. 样式设置分组视图(GroupBy View) 类似outlook 2007,可将列拖到分组栏中,让数据分组展示 操作方法: grid.DisplayLayout.ViewStyleBand = ViewStyleBand.OutlookGroupBy;二、 UltraGrid 设计器操作UltraWinGrid Designer(UltraGrid设计器项目) Basic Settings : Data Schema : 设置绑定列的数据格式 Presets : 从预设中选择一个样式,有三种类型:(1)仅与外观相关;(2)仅与行为相关;(3)两者都有 Manage Presets : 预设管理和设置 Feature Picker : 配置功能。详见后 Appearance Browser : 定制的一些外观样式 Band and Column Settings : 要展示数据集和列设置 Band0 - 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: StartBasic SettingsData SchemaManually Define a Schema添加Column,命名用数据库中的字段名。 添加Column Title: Band and Column SettingsBand 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 单列不可编辑:Band0/Column/cellactivation 设置成NoEdit 单击单元格选择状态:Band0/Column/CellClickAction 单元格编辑控件:Band0/Column/EditorControl 单元格合并:Band0/Column/MergedCell。 冻结列:Picker/Fixed Header三、UltraGrid 外观控制 Grid 动态转载样式文件 this.ultraGrid1.ApplyPresetFromXml(C:Program FilesCommon FilesInfragistics + PresetsWinUltraGridBaseStandardFlatGreen.xml, true);存取布局文件(可用这玩意设计报表,动态载入) this.ultraGrid1.DisplayLayout.SaveAsXml(WinGridLayout.xml); this.ultraGrid1.DisplayLayout.LoadFromXml(System.IO.Path.Combine(Application.StartupPath,.ExtraFilesWinGridLayout.xml);使用Appearance(类似预定义的样式) this.ultraGrid1.DisplayLayout.Appearances.Add(Highlighted ); this.ultraGrid1.DisplayLayout.AppearancesHighlighted .BackColor = Color.Red; this.ultraGrid1.DisplayLayout.AppearancesHighlighted .BackColor = Color.White; 或者直接给预设Appearance赋值 this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.ForeColor = Color.White;使用操作系统样式 this.ultraGrid1.UseOsThemes = DefaultableBoolean.True;HotTrackthis.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.ColScrollRegions0.Split(0); this.ultraGrid1.DisplayLayout.RowScrollRegions0.Split(200); 取消分割视图 this.ultraGrid1.DisplayLayout.MaxColScrollRegions = 1; this.ultraGrid1.DisplayLayout.MaxRowScrollRegions = 1;修改Tab键功能 this.ultraGrid1.DisplayLayout.TabNavigation = TabNavigation.NextControl;TabletPC Ink-Enable 将UltraInkProvider 组件拖到窗体上就可以了 编辑状态的输入框右侧会显示一个小笔按钮,点击后就会弹出手写输入框 若要在非TabletPC上使用该功能,需要安装TabletPC SDK定义和应用外观样式 this.ultraGrid1.DisplayLayout.Appearances.Add(Highlighted); this.ultraGrid1.DisplayLayout.AppearancesHighlighted.BackColor = Color.Red; this.ultraGrid1.DisplayLayout.AppearancesHighlighted.BackColor = Color.White; this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance =this.ultraGrid1.DisplayLayout.AppearancesHighlighted; this.ultraGrid1.DisplayLayout.Override.RowSelectorAppearance =this.ultraGrid1.DisplayLayout.AppearancesHighlighted; - 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.Bands0.SortedColumns.Add(Country, false, true);this.ultraGrid1.DisplayLayout.Bands0.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 = Drag and drop a column to group bythat column.; 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.DisplayLayout.GroupByBox.ButtonConnectorStyle =UIElementBorderStyle.Dotted; this.ultraGrid1.DisplayLayout.GroupByBox.ButtonConnectorColor = Color.Maroon;卡片视图 grid.Band0.CardView = true; grid.Band0.CardSettings. 样式设置展开所有行(子行) this.ultraGrid1.Rows.ExpandAll(true);数据过滤器 示例 e.Layout.Override.AllowRowFiltering = DefaultableBoolean.True; e.Layout.Override.RowFilterAction = RowFilterAction.AppearancesOnly; e.Layout.Override.FilteredInCellAppearance.ForeColor = Color.DarkGreen; e.Layout.Override.FilteredOutCellAppearance.ForeColor = Color.DarkRed; 打开过滤器 this.ultraGrid1.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.True; 设置过滤器功能 this.ultraGrid1.DisplayLayout.Override.RowFilterMode = RowFilterMode.AllRowsInBand; this.ultraGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.FilterRow; this.ultraGrid1.DisplayLayout.Override.FilterEvaluationTrigger =FilterEvaluationTrigger.OnLeaveCell; this.ultraGrid1.DisplayLayout.Override.FilterOperatorDefaultValue =FilterOperatorDefaultValue.DoesNotContain; this.ultraGrid1.DisplayLayout.Override.FilterOperandStyle =FilterOperandStyle.DropDownList; this.ultraGrid1.DisplayLayout.Override.FilterOperatorLocation =FilterOperatorLocation.WithOperand; this.ultraGrid1.DisplayLayout.Override.FilterOperatorDropDownItems =FilterOperatorDropDownItems.All; this.ultraGrid1.DisplayLayout.Override.FilterClearButtonLocation =FilterClearButtonLocation.Row; this.ultraGrid1.DisplayLayout.Override.FilterRowPrompt = Click here to filterrows.; this.ultraGrid1.DisplayLayout.Bands0.SpecialRowPromptField = Address; the LogicalOperator property of the ColumnFiltersCollection object. 外观 ultraGrid1.DisplayLayout.Override.FilterRowAppearance ultraGrid1.DisplayLayout.Override.FilterRowAppearanceActive ultraGrid1.DisplayLayout.Override.FilterCellAppearance ultraGrid1.DisplayLayout.Override.FilterRowSelectorAppearance 自定义过滤规则 UltraGridBand band = this.ultraGrid1.DisplayLayout.Bands2; band.ColumnFiltersUnit Price.FilterConditions.Clear( ); band.ColumnFiltersUnit Price.FilterConditions.Add(FilterComparisionOperator.GreaterThan, 5 ); band.ColumnFiltersUnit Price.FilterConditions.Add(FilterComparisionOperator.LessThan, 10 ); band.ColumnFiltersUnit Price.LogicalOperator = FilterLogicalOperator.And;数据错误提示 this.ultraGrid1.DisplayLayout.Override.SupportDataErrorInfo =SupportDataErrorInfo.RowsAndCells; this.ultraGrid1.DisplayLayout.Bands0.Columns0.SupportDataErrorInfo =DefaultableBoolean.False; this.ultraGrid1.DisplayLayout.Override.DataErrorCellAppearance.BackColor = Color.Red; this.ultraGrid1.DisplayLayout.Override.DataErrorRowSelectorAppearance.BackColor =Color.Red; this.ultraGrid1.DisplayLayout.Override.DataErrorRowAppearance.BackColor =Color.LightYellow; private void ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e) string rowError = ; string cellError = ; Object value = e.Row.CellsFax.Value; / Set the data error if Fax column value is empty if(DBNull.Value = value) rowError = Row contains errors.; cellError = Fax can not be empty; DataRowView drv = (DataRowView)e.Row.ListObject; drv.Row.RowError = rowError; drv.Row.SetColumnError(Fax, cellError); Tooltip SummarySettings averageSummary = e.Layout.Bands0.Summaries.Add( GradeAverage, SummaryType.Average, e.Layout.Bands0.ColumnsGrade ); averageSummary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;averageSummary.SummaryPositionColumn = averageSummary.SourceColumn;averageSummary.DisplayFormat = Average: 0:.#;averageSummary.Band.Override.SummaryFooterCaptionVisible = DefaultableBoolean.False;averageSummary.Band.Override.BorderStyleSummaryFooter = UIElementBorderStyle.None; -SummarySettings summary = this.ultraGrid1.DisplayLayout.Bands0.Summaries.Add( sum, SummaryType.Sum, this.ultraGrid1.DisplayLayout.Bands0.Columns0, SummaryPosition.UseSummaryPositionColumn );summary.ToolTipText = string.Format( Sum of column 0.,summary.SourceColumn.Header.Caption );this.ultraGrid1.Rows.SummaryValues sum .ToolTipText = string.Format( Sum ofcolumn 0., summary.SourceColumn.Header.Caption );AlphaBendif(this.chkRowAlpha.Checked = true) this.ultraGrid1.DisplayLayout.Override.RowAppearance.BackColorAlpha =Alpha.UseAlphaLevel; this.ultraGrid1.DisplayLayout.Override.RowAppearance.AlphaLevel =short.Parse(this.spnAlphaLevel.Value.ToString();else this.ultraGrid1.DisplayLayout.Override.RowAppearance.BackColorAlpha =Alpha.Opaque; this.ultraGrid1.DisplayLayout.Override.RowAppearance.AlphaLevel = 0; -if (chEnableAlphaBlending.Checked) this.ultraGrid1.DisplayLayout.Appearance.ImageBackground =Image.FromFile(clsSamplesPath.GraphicsPath + Backgroundsnasa_saturn_montage.jpg); this.ultraGrid1.DisplayLayout.Appearance.ImageBackgroundOrigin =Infragistics.Win.ImageBackgroundOrigin.Form; this.ultraGrid1.DisplayLayout.Appearance.ImageBackgroundStyle =Infragistics.Win.ImageBackgroundStyle.Tiled; this.ultraGrid1.AlphaBlendMode = Infragistics.Win.AlphaBlendMode.Optimized;else this.ultraGrid1.AlphaBlendMode = Infragistics.Win.AlphaBlendMode.Disabled; this.ultraGrid1.DisplayLayout.Appearance.ImageBackground = null;显隐标题if (chShowCaption.Checked = true) this.ultraGrid1.Text = UltraWinGrid CardView Sample;else this.ultraGrid1.Text = ;边框显示 ug.DisplayLayout.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid;背景色 ug.DisplayLayout.Appearance.BackColor = Color.White; Band 设置数据条带退格宽度 this.ultraGrid1.DisplayLayout.Bands1.Indentation = 100; Caption 表格标题(Caption) this.ultraGrid1.DisplayLayout.CaptionVisible = DefaultableBoolean.True;标题 ug.DisplayLayout.CaptionAppearance.TextHAlign = Infragistics.Win.HAlign.Left; ug.DisplayLayout.CaptionAppearance.BackColor = Color.LightSteelBlue; Head 控制标题行的位置 / RepeatOnBreak, FixedOnTop, OncePerRowIsland, OncePerGroupedRowIsland e.Layout.Override.HeaderPlacement = HeaderPlacement.OncePerGroupedRowIsland;e.Layout.Bands0.Override.HeaderPlacement = HeaderPlacement.FixedOnTop;标题换行展示 this.ultraGrid1.DisplayLayout.Override.WrapHeaderText = true;Header置顶不动 设置displaylayout中的stationarymargins标题行样式 this.ultraGrid1.DisplayLayout.Override.AllowColSizing = AllowColSizing.Free; this.ultraGrid1.DisplayLayout.Bands0.HeaderVisible = true;this.ultraGrid1.DisplayLayout.Bands1.HeaderVisible = true;this.ultraGrid1.DisplayLayout.Bands1.Header.Caption = Orders; this.ultraGrid1.DisplayLayout.Bands0.Indentation = 0;this.ultraGrid1.DisplayLayout.Bands1.Indentation = 0;this.ultraGrid1.DisplayLayout.RowConnectorStyle = RowConnectorStyle.None; this.ultraGrid1.DisplayLayout.Bands0.Header.Appearance.ThemedElementAlpha =Alpha.Transparent;this.ultraGrid1.DisplayLayout.Bands0.Header.Appearance.BackColor =SystemColors.ActiveCaption;this.ultraGrid1.DisplayLayout.Bands0.Header.Appearance.ForeColor =SystemColors.ActiveCaptionText;this.ultraGrid1.DisplayLayout.Bands1.Hea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 口腔实操考试题库及答案
- 针灸基础考试题库及答案
- 主管药师考试题库及答案
- 2025年新疆农作物制种项目验收合同协议
- 太原地理结业考试题及答案
- 技术类合同模板和要点解释文档
- 软件面试笔试题目及答案
- 入党笔试考试试题及答案
- 人行法律笔试题库及答案
- 券商暑期笔试题库及答案
- 云南省地图含市县地图矢量分层地图行政区划市县概况ppt模板
- GB/T 41843-2022功能、残疾、健康分类的康复组合评定
- 退伍军人职业规划课件
- 压花艺术课件
- 洗眼器教育培训
- 调查研究方法与调研报告写作讲义课件
- 《心理学史》-新行为主义课件
- 干燥综合症的中医治疗冯兴华公开课课件
- 汉字五千年第七章 汉字与姓氏文化课件
- 关于开具无犯罪记录证明的函(模板)
- 绘图服务合同(范本)
评论
0/150
提交评论