DEVExpress GridControl数据源是List<T> 或 DataTable读取单元格里面的值

本文介绍如何从GridControl中获取当前聚焦单元格的值,分别针对使用DataTable和List<T>作为数据源的情况提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果数据源是DataTable获取单元格里面的值

this.GridControl.DataSource=DataTable

int rowHandle=this.GridView.FocusedHandle;

DataRow dr=this.GridView.GetDataRow(rowHandle);

string id=dr["ID"].toString();


如果数据源是List<T>获取单元格里面的值

this.GridControl.DataSource=List<T>

int rowHandle=this.GridView.FocusedHandle;

string id=this.GridView.GetRowCellValue(rowHandle,"Id").toString();



### 如何在 XtraReport 中绑定 `List<DataTable>` 数据源DevExpress 提供的 XtraReports 工具中,可以将复杂的数据结构(如 `List<DataTable>`)绑定到报表中。以下是实现这一功能的具体方法: #### 报表数据源配置 XtraReport 支持多种数据源类型,其中包括自定义对象列表和 ADO.NET 表格。为了绑定 `List<DataTable>` 到 XtraReport,可以通过以下步骤完成。 1. **创建数据源** 需要先准备一个包含多个 `DataTable` 的 `List<DataTable>` 对象。这些表格通常表示不同的数据集分组数据[^1]。 2. **设置主数据源** 将整个 `List<DataTable>` 设置为主数据源,并通过子报告其他控件访问其中的各个表格[^2]。 3. **动态加载子报告** 如果需要展示多个独立的表格,则可以在主报告中嵌套子报告,并为每个子报告单独分配对应的 `DataTable`。 #### 示例代码 下面是一个完整的示例代码,演示如何将 `List<DataTable>` 绑定到 XtraReport 并显示其内容。 ```csharp using System; using System.Collections.Generic; using System.Data; using DevExpress.XtraReports.UI; public class ReportDataSourceExample { public static void BindListToXtraReport() { // 创建 List<DataTable> var dataList = new List<DataTable>(); // 添加第一个 DataTable var table1 = new DataTable("Table1"); table1.Columns.Add("ID", typeof(int)); table1.Columns.Add("Name", typeof(string)); table1.Rows.Add(1, "John Doe"); table1.Rows.Add(2, "Jane Smith"); // 添加第二个 DataTable var table2 = new DataTable("Table2"); table2.Columns.Add("OrderID", typeof(int)); table2.Columns.Add("ProductName", typeof(string)); table2.Rows.Add(101, "Laptop"); table2.Rows.Add(102, "Smartphone"); // 将两个 DataTable 加入 List dataList.Add(table1); dataList.Add(table2); // 创建并初始化 XtraReport 实例 var report = new XtraReport(); foreach (var dataTable in dataList) { // 动态添加 DetailBand 和 XRLabel 控件 var detailBand = new DetailBand(); var labelControl = new XRLabel(); labelControl.Text = $"Data from {dataTable.TableName}"; labelControl.LocationF = new DevExpress.Utils.PointFloat(0, 0); detailBand.Controls.Add(labelControl); // 使用 DataMember 属性指定当前 DataTable 名称 report.Bands.Add(detailBand); report.DataSource = dataList; // 主数据源设为 List<DataTable> report.DataMember = dataTable.TableName; } // 显示预览窗口 var tool = new ReportPrintTool(report); tool.ShowPreviewDialog(); } } ``` #### 关键点说明 - **`DataSource` 属性** 可以直接将 `List<DataTable>` 赋给 `XtraReport.DataSource` 属性。这使得所有表格都可以被统一管理[^1]。 - **`DataMember` 属性** 当前活动的 `DataTable` 可以通过设置 `XtraReport.DataMember` 来切换。此属性指定了具体使用的表格名称[^2]。 - **动态生成 Band** 在实际应用中可能需要根据数据量自动调整布局。因此建议利用循环机制逐一处理每张表格,并为其分配合适的带区(Bands)[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值