DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。
在Table(表格)视图中,数据记录用行表示,而在卡片视图中,数据记录用卡片表示。在本文中,行通常用于指“表视图”中的行和“卡片视图”中的卡片。
DevExpress技术交流群11:749942875 欢迎一起进群讨论
识别行
视图中的行由唯一的整数值——行句柄来标识,视图使用以下规则将其行与行句柄关联:
- 无论一行当前是否可见(一行可能由于滚动而不可见,也可能隐藏在折叠的组中),每一行都有一个行句柄来唯一地标识它。
- 数据行句柄从零开始。
- 组行句柄为负,从-1开始。
可见行也可以通过它们的可见索引来标识,这些指标从零开始,连续的整数被分配给额外的可见行(组或数据)。如果包含在折叠的组行中,则隐藏行。
下图说明了赋值规则,以及行句柄和可见索引之间的关系。

特殊行句柄
- New Item Row (Table View) - 这一行允许最终用户向数据源添加新记录,它的句柄由DataControlBase.NewItemRowHandle属性返回。
- Automatic Filter Row (Table View) - Auto Filter Row允许最终用户动态地过滤数据,在本行中输入文本将自动创建并对视图应用筛选器,它的句柄由DataControlBase.AutoFilterRowHandle属性返回。
- 通常这个行句柄对应于视图中不存在的行,它的句柄由DataControlBase.InvalidRowHandle属性返回。
获取行句柄
DevExpress WPF GridControl包含多个方法,这些方法允许您在数据源中获取行句柄、可见索引和索引。接下来我们列出并描述了这些方法:
- DataViewBase.FocusedRowHandle:如果DataViewBase.NavigationStyle属性没有设置为GridViewNavigationStyle.None,则指定焦点行的句柄。
- DataViewBase.GetRowHandleByMouseEventArgs(MouseEventArgs):返回位于鼠标指针下的行句柄。
- DataViewBase.GetRowHandleByTreeElement(DependencyObject):返回包含指定元素的行的句柄。
- GridControl.GetRowHandleByVisibleIndex(Int32):通过该行可见索引返回该行句柄。
- GridControl.GetRowHandleByListIndex(Int32):根据数据源中的索引返回行句柄。
- GridControl.GetListIndexByRowHandle(Int32):通过行句柄返回数据源中的行索引。
- DataControlBase.FindRow(Object):在GridControl或TreeListControl中搜索数据行并返回该行句柄。
- DataControlBase.FindRowByValue(ColumnBase, Object):在列中搜索值并返回相应行的句柄。
- DataControlBase.FindRowByValue(String, Object):在列中搜索值并返回相应行的句柄。
- GridControl.FindRowByValueAsync(ColumnBase, Object):在列中搜索值,并异步返回相应行的句柄。
- GridControl.FindRowByValueAsync(String, Object):在列中搜索值,并异步返回相应行的句柄。
- DataViewBase.GetNextRowHandle(Int32):返回指定行的后一行句柄。
- DataViewBase.GetPrevRowHandle(Int32):返回指定行之前的行句柄。
下面的示例显示如何获取已单击的行。
C#
private void TableView_MouseDown(object sender, MouseButtonEventArgs e) { int rowHandle = grid.View.GetRowHandleByMouseEventArgs(e as MouseEventArgs); MessageBox.Show(GetRowType(rowHandle), "Hit Info"); } private string GetRowType(int rowHandle) { if (grid.IsGroupRowHandle(rowHandle)) return "Group Row"; if (rowHandle == GridControl.AutoFilterRowHandle) return "Automatic Filter Row"; if (rowHandle == GridControl.NewItemRowHandle) return "New Item Row"; if (rowHandle == GridControl.InvalidRowHandle) return "Invalid Row"; return "Data Row"; }
获取数据源中的数据行和行索引
行句柄和可见索引反映了视图中行的可见顺序,这些可能会随着行位置或可见性的改变而改变。要引用数据源中的特定行,应该使用列表索引(数据源中的行索引)。要通过指定句柄来获取行的列表索引,请使用GridControl.GetListIndexByRowHandle方法。
要获取与具有指定句柄行对应的行对象,请使用DataControlBase.GetRow, GridControl.GetRowAsync 或 GridControl.GetRowByListIndex方法。要获取焦点行,请使用GridControl.GetFocusedRow方法。行对象表示数据源中的记录,例如 DataRow对象表示数据表中的一条记录。
更多产品资讯及授权,欢迎来电咨询:023-68661681
更多DevExpress线上公开课、中文教程资讯请上中文网获取
关于慧都科技
慧都是⼀家⾏业数字化解决⽅案公司,专注于软件、⽯油与⼯业领域,以深⼊的业务理解和⾏业经验,帮助企业实现智能化转型与持续竞争优势。
慧都是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
本文地址:https://www.devexpresscn.com/post/5212.html
相关产品: DevExpress WPF Subscription, DevExpress Universal Subscription,