惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
G
GRAHAM CLULEY
H
Hackread – Cybersecurity News, Data Breaches, AI and More
阮一峰的网络日志
阮一峰的网络日志
L
Lohrmann on Cybersecurity
S
Security @ Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Security Affairs
The Cloudflare Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Spread Privacy
Spread Privacy
Y
Y Combinator Blog
V2EX - 技术
V2EX - 技术
罗磊的独立博客
F
Full Disclosure
Jina AI
Jina AI
S
Schneier on Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
CXSECURITY Database RSS Feed - CXSecurity.com
Webroot Blog
Webroot Blog
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recorded Future
Recorded Future
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 三生石上(FineUI控件)
K
Kaspersky official blog
V
Visual Studio Blog
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Tor Project blog
Cloudbric
Cloudbric
Hacker News - Newest:
Hacker News - Newest: "LLM"
爱范儿
爱范儿
L
LINUX DO - 最新话题
GbyAI
GbyAI
Attack and Defense Labs
Attack and Defense Labs
H
Heimdal Security Blog
Recent Announcements
Recent Announcements
L
LINUX DO - 热门话题
L
LangChain Blog
Simon Willison's Weblog
Simon Willison's Weblog

博客园 - AABBbaby

从研发到供应链——轻量级CAD查看器SpinFire Insight在汽车行业的应用价值 DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(五) 基于嵌入向量的智能检索!HOOPS AI 解锁 CAD 零件相似性搜索新方式 从自研到外购:HOOPS如何帮助工业软件开发商加速上市、聚焦差异化 车企携手Tech Soft 3D:基于 HOOPS 工具集打造Web端一体化工程可视化解决方案 CAD格式转换引擎HOOPS Exchange v2026.2.0:计算镶嵌能力升级,释放3D数据处理新潜力 界面控件DevExpress JS & ASP.NET Core v25.2新版亮点 - AI驱动扩展功能升级 CAD格式转换引擎HOOPS Exchange 2026.2.0发布:率先支持 NX 2512,引领工业数据交换新标杆 界面组件DevExpress正式官宣发布v25.2.5|附高速下载 HOOPS Mesh、HOOPS Access 与 HOOPS Solve 发布 SAM 2.15:全面提升 CAE 数据处理与仿真互操作能力 DevExpress WPF中文教程:Data Grid - 服务器模式和即时反馈模式 CAE后处理开发选商业还是开源工具?HOOPS Envision与VTK/ParaView深度对比 DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(四) 工业级可视化引擎HOOPS Visualize Web 2026.1.0重塑Web 3D可视化体验 界面控件DevExpress VCL v25.2新功能亮点:支持RAD Studio 13 HOOPS可视化技术如何推动SINTEF Ocean海洋结构仿真软件走向工程化应用? DevExpress WPF中文教程:Data Grid - 示例服务教程 突破性迈进 | HOOPS Exchange 2026.1正式发布DGN阅读器,全面开启 DGN 数据高保真访问时代 3D Web可视化引擎HOOPS Visualize Web v2026.1.0更新发布:持续增强Web端工程级3D可视化能力 应用程序主题研发有妙招!DevExtreme拥有多种预定义主题样式 界面组件DevExpress WPF v22.1 - 全新升级数据分析功能 移动应用开发推荐这个三方组件,时间选择即刻拥有全新体验 UI组件Kendo UI for Angular R3 2022亮点——让应用程序体验更酷炫 如何用界面组件DevExpress WPF创建Excel式的过滤功能?赶紧Get 响应式UI组件DevExtreme 10月新版——v22.1.6全新发布 界面控件DevExtreme中文使用指南——如何构建 & 应用模板 行业领先的界面控价DevExpress 10月新版——v22.1.6发布 「行业应用」界面框架Kendo UI助力企业加速完成财务数据可视化 如何用界面组件DevExpress WinForm创建一个支持High DPI的应用? 界面组件Telerik WinForm R3 2022,让应用启动变得更酷炫 界面组件DevExpress WinForms v22.1新版亮点 - 支持High-DPI UI组件Kendo UI for jQuery R3 2022亮点——拥有全新的按钮组件 界面组件DevExpress WPF TreeView中文指南 - 如何实现数据分层展示 「详解」看界面控件DevExtreme如何实现异步验证 界面控件DevExpress WinForm中文指南 - 使用HTML&CSS模板的条件样式 MyEclipse技术全面解析——Spring IDE,改变应用程序研发 界面组件DevExpress WinForms v22.1 - 类office功能全新升级 界面组件Telerik UI for WPF R3 2022——支持最新的.NET 7预览版 界面控件DevExpress WPF Data Grid组件,拥有XAML设计时项目源向导 B/S端界面控件DevExtreme React Scheduler—与Material UI无缝集成 来看界面组件DevExpress WinForm是如何实现地图搜索的 VCL界面组件DevExpress VCL v22.1 - 发布全新的Shell组件 响应式UI组件集DevExtreme v22.1.5,9月全新发布! 界面组件包DevExpress v22.1.5——9月全新发布 界面控件DevExtreme React Grid—如何将数据导出到Excel文档? 界面控件DevExpress WinForms - 有关.NET Core 6+的项目迁移说明 如何为WPF应用程序制作一个虚拟键盘?这里有答案(Part 2) Visual Studio插件DevExpress CodeRush v22.1- 支持C# 10 一篇文章教你如何用界面组件DevExpress WPF创建一个WPF视图模型 B/S架构下的界面控件DevExtreme甘特图有哪些功能?一起来看 界面控件DevExpress WinForms Property Grid - 全新的Office视图 界面组件DevExpress MAUI & Xamarin v22.1 - 全新的项目模板 界面组件DevExpress WPF Data Grid哪些功能还能增强?一起来看 如何为WPF应用程序制作一个虚拟键盘?这里有答案(Part 1) B/S端界面控件DevExtreme JavaScript—全新的UI模板库 (v22.2) Web开发者福音!创建第一个Vite支持的Web应用(2/2) 界面控件DevExpress WinForms & WPF v22.2——全新的.NET和ARM支持 跨平台UI组件DevExpress XAF v22.1 - 程序集默认面向 .NET 6 如何用界面组件DevExpress WPF Scheduler实现数据的按需加载?
界面控件DevExpress WinForms中文教程:Data Grid - 数据绑定(二)
AABBbaby · 2026-03-13 · via 博客园 - AABBbaby

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

DevExpress的数据感知控件与任意数据访问技术(如 ADO.NET、Entity Framework、XPO 等)兼容,并且能够显示来自任何实现 IList、IBindingList 或 ITypedList 接口数据源的数据。请注意,服务器模式和即时反馈模式会对数据绑定施加一定的限制。

Data Grid(或任何其他DevExpress数据感知控件)按原样显示源数据,如果您需要先显示经过筛选或排序的记录,或者将多个数据源合并为一个数据源,那么请在将数据感知控件绑定到该数据源之前,在数据源层面进行操作。

在上文中(点击这里回顾>>),我们介绍了如何创建一个新的数据源、选择现有的数据源、绑定到BindingList源等,本文将继续介绍如何切换另一个数据源等,欢迎持续关注我们~

获取DevExpress WinForms v25.2正式版下载

DevExpress技术交流群12:1028386091      欢迎一起进群讨论

切换到另一个数据源

一旦您首次选择了数据源,Data Grid会自动生成所有必需的列。如果之后您选择了其他数据源,之前创建的列仍会保留,这些列需要手动进行更新。要进行更新,请启动Data Grid Designer(数据网格设计器),切换到 “Columns”选项卡,然后点击“Retrieve Fields”按钮 。

DevExpress WinForms中文使用教程图集

如果您需要在代码中更改数据源,请将GridControl.DataSource属性重置为 null(在 Visual Basic 中为 Nothing),然后为该属性赋值一个新的数据源对象,建议将此代码包含在BeginUpdate()和 EndUpdate()方法调用之中。

C#

gridControl1.BeginUpdate();
try {
gridView1.Columns.Clear();
gridControl1.DataSource = null;
gridControl1.DataSource = < newDataSource >;
}
finally {
gridControl1.EndUpdate();
}

VB.NET

gridControl1.BeginUpdate()
Try
gridView1.Columns.Clear()
gridControl1.DataSource = Nothing
gridControl1.DataSource = (Of newDataSource )
Finally
gridControl1.EndUpdate()
End Try
将更改发布到源

对于大多数数据源类型,数据网格允许用户在运行时编辑数据,但这些更改不会自动保存到底层数据源中。请参考以下主题以了解如何将更改提交到数据源:Post Data to an Underlying Data Source

清除网格

GridControl.DataSource属性设置为 null(在 VB.NET 中为 Nothing),然后调用视图的 Columns.Clear()方法。

C#

gridControl1.DataSource = null;
gridView1.Columns.Clear();

VB.NET

gridControl1.DataSource = Nothing
gridView1.Columns.Clear()

如果您需要暂时清除数据网格中的数据并随后再恢复其数据,可以将该控件切换至一个空视图模式。

C#

using DevExpress.XtraGrid.Views.Grid;

object ds; // Data source

// Clear
ds = gridControl1.DataSource;
gridControl1.DataSource = null;
GridView view = new GridView(gridControl1);
view.OptionsView.ShowGroupPanel = false;
view.OptionsView.ShowColumnHeaders = false;
gridControl1.MainView = view;

// Restore
gridControl1.MainView = gridView1;
gridControl1.DataSource = ds;

VB.NET

Imports DevExpress.XtraGrid.Views.Grid

Private ds As Object ' Data source

' Clear
ds = gridControl1.DataSource
gridControl1.DataSource = Nothing
Dim view As New GridView(gridControl1)
view.OptionsView.ShowGroupPanel = False
view.OptionsView.ShowColumnHeaders = False
gridControl1.MainView = view

' Restore
gridControl1.MainView = gridView1
gridControl1.DataSource = ds
支持Fluent API

传统的自定义网格列或将它们与数据绑定的方法是假定您通过字符串字段名来访问列,如果无法在运行时填充网格列,或者您需要自定义逻辑来获取列设置,那么可以使用一个简洁的 API 替代它。在 Visual Studio 中,智能感知功能允许您查看所有数据源属性,并将所需的字段绑定到网格列上。

这种技术在您修改数据源结构(例如删除一个数据源字段)或者在字段名称中出现拼写错误(比如试图访问一个不存在的字段)时,会生成防故障代码,这些操作会立即引发无法被忽略的异常。而传统的技术在某些情况下可能会忽略此类错误,从而生成“无效”代码,这些代码难以被检测到。

要使用此功能,请在您的代码中引用XtraGrid.Extension命名空间。

C#

using DevExpress.XtraGrid.Extensions;

VB.NET

Imports DevExpress.XtraGrid.Extensions

现在您可以调用ColumnView.With方法来添加和配置列,以下代码片段展示了示例内容:

C#

gridView1.With<Customer>(settings => {
settings.Columns
.Add(f => f.ContactName, col => {
col.Caption = "Contact";
col.SortOrder = DevExpress.Data.ColumnSortOrder.Descending;
col.SortIndex = 0;
})
.Add((f => f.Phone), c => { c.Caption = "Phone Number"; })
.Add(p => p.CompanyName)
.WithCaption("Company Name")
.WithGrouping()
.With(col => { });
});

VB.NET

gridView1.With(Of Customer)(Sub(settings)
settings.Columns.Add(Function(f) f.ContactName, Sub(col)
col.Caption = "Contact"
col.SortOrder = DevExpress.Data.ColumnSortOrder.Descending
col.SortIndex = 0
End Sub).Add((Function(f) f.Phone), Sub(c) c.Caption = "Phone Number").Add(Function(p) p.CompanyName).WithCaption("Company Name").WithGrouping().With(Sub(col)
End Sub)
End Sub)

借助fluent API,您可以使用 ColumnView.GetColumnViewSettings方法来获取现有列并修改其设置。例如,以下代码是 GridView.RowCellStyle事件处理程序,它会识别与行单元格相关联的列,并如果该列是“Phone”则将其填充为红色:

C#

void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) {
GridColumn col = (sender as ColumnView).GetColumnViewSettings<Customer>().Columns[c => c.Phone].AsColumn();
if((col!=null) && (e.Column == col)) {
e.Appearance.BackColor = Color.Red;
}
}

VB.NET

Private Sub gridView1_RowCellStyle(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs)
Dim col As GridColumn = (TryCast(sender, ColumnView)).GetColumnViewSettings(Of Customer)().Columns(Function(c) c.Phone).AsColumn()
If (col IsNot Nothing) AndAlso (e.Column Is col) Then
e.Appearance.BackColor = Color.Red
End If
End Sub

更多DevExpress线上公开课、中文教程资讯请上中文网获取