热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DevXpress控件:第一篇:将Master_Details关系进行到底XtraPivotGridControl控件

一.控件说明:XtraPivotGridControl;数据控件二.控件特点:1.支持行,列字段拖动,对调支持行,列字段的添加,移除支持数据字段的添加,移除,对调2.

. 控件说明: XtraPivotGridControl;数据控件

 

 

. 控件特点:

1. 支持行, 列字段拖动, 对调

   支持行, 列字段的添加, 移除

   支持数据字段的添加, 移除, 对调

2. 支持以行, 列字段排序

  支持以过滤字段排序

3. 支持行, 列字段过滤                                          

4. 支持行, 列字段的归类, 即形成父子层

横向和竖向同时形成树结构, 可收缩展开

 

.测试数据: 1.数据库: sqlserver2000; Norwind

     2.关联表: Customers; Orders; Order_Details; Products;

     3.DevExpress 版本: V8.1

 

. 运行截图:

1.       行字段: 客户名称;订单号

列字段: 产品名称

数据字段: 商品单价;购买数量

过滤字段: 客户公司名称;所签合同名;订购日期;截止日期;提货日期

 

 2. 以客户名称进行过滤

 

3.   拖动行字段和列字段(此处演示对调)

产品名称作为行, 客户名称作为列显示

同时将过滤区的字段 订购日期作加入列中

这样重构树: 客户名称à订购日期

数据字段移除商品单价, 只保留购买数量

 

 

. 程序代码

1. 此处全部以 RunTime 进行设计

2. 绑定数据源:

(1):selectSql:

 this.sqlstr = "select a.*, b.*, c.*, d.* from Orders a inner join Order_Details b on a.OrderID=b.OrderID "

+ " inner join Customers c on a.CustomerID=c.CustomerID inner join Products d on b.ProductID=d.ProductID;";

(2): DataSource ; DataMember;

this.pivotGridControl1.DataSource = this.database.RunReturnDataSet(this.sqlstr);

this.pivotGridControl1.DataMember = this.database.dataSet.Tables[0].TableName;

3.      运行时添加字段

子逸制作--动态添加字段
///
/// 给消费链添加添加字段
///

private void AddOrdersColumns()
{
//Customers表
PivotGridField customerID = new PivotGridField();
customerID.FieldName
= "CustomerID";
customerID.Caption
= "客户名称";
customerID.Area
= DevExpress.XtraPivotGrid.PivotArea.RowArea;

PivotGridField companyName
= new PivotGridField();
companyName.FieldName
= "CompanyName";
companyName.Caption
= "客户公司名称";
companyName.Area
= DevExpress.XtraPivotGrid.PivotArea.FilterArea;
companyName.Width
= 150;

PivotGridField contactTitle
= new PivotGridField();
contactTitle.FieldName
= "ContactTitle";
contactTitle.Caption
= "所签合同名";
contactTitle.Area
= DevExpress.XtraPivotGrid.PivotArea.FilterArea;


//Orders表
PivotGridField orderID = new PivotGridField();
orderID.FieldName
= "OrderID";
orderID.Caption
= "订单号";
orderID.Area
= DevExpress.XtraPivotGrid.PivotArea.RowArea;

PivotGridField orderDate
= new PivotGridField();
orderDate.FieldName
= "OrderDate";
orderDate.Caption
= "订购日期";
orderDate.Area
= DevExpress.XtraPivotGrid.PivotArea.FilterArea;

PivotGridField requiredDate
= new PivotGridField();
requiredDate.FieldName
= "RequiredDate";
requiredDate.Caption
= "截止日期";
requiredDate.Area
= DevExpress.XtraPivotGrid.PivotArea.FilterArea;

PivotGridField shippedDate
= new PivotGridField();
shippedDate.FieldName
= "ShippedDate";
shippedDate.Caption
= "提货日期";
shippedDate.Area
= DevExpress.XtraPivotGrid.PivotArea.FilterArea;

//OrderDetails
PivotGridField unitPrice = new PivotGridField();
unitPrice.FieldName
= "UnitPrice";
unitPrice.Caption
= "商品单价";
unitPrice.Area
= DevExpress.XtraPivotGrid.PivotArea.DataArea;


PivotGridField Quantity
= new PivotGridField();
Quantity.FieldName
= "Quantity";
Quantity.Caption
= "购买数量";
Quantity.Area
= DevExpress.XtraPivotGrid.PivotArea.DataArea;


//Product表
PivotGridField productName = new PivotGridField();
productName.FieldName
= "ProductName";
productName.Caption
= "产品名称";
productName.Area
= DevExpress.XtraPivotGrid.PivotArea.ColumnArea;

//添加到控制中
this.pivotGridControl1.Fields.Add(customerID);
this.pivotGridControl1.Fields.Add(companyName);
this.pivotGridControl1.Fields.Add(contactTitle);

this.pivotGridControl1.Fields.Add(orderID);

this.pivotGridControl1.Fields.Add(orderDate);
this.pivotGridControl1.Fields.Add(requiredDate);
this.pivotGridControl1.Fields.Add(shippedDate);

this.pivotGridControl1.Fields.Add(unitPrice);
this.pivotGridControl1.Fields.Add(Quantity);

this.pivotGridControl1.Fields.Add(productName);


}

 

2.      运行时改变字段的显示区域

 

 customerID.Area = DevExpress.XtraPivotGrid.PivotArea.RowArea;

 

五. 属性

1. 允许拖动

this.pivotGridControl1.OptionsCustomization.AllowDrag = true;

2. 允许排序

this.pivotGridControl1.OptionsCustomization.AllowSort = true;

3. 允许过滤

 this.pivotGridControl1.OptionsCustomization.AllowFilter = true;

 

六: 总结后记

1.      此控件较为灵活;对于 Master_Details 关系表处理的相当好;

2.      此控件数据区只能显示数字类型字段, 类似于统计分析;

3.      后面会有更多的 DevExpress 控件介绍给大家

4.      这里只介绍控件的简单使用;如需更复杂的技术支持或交流请与作者联系;

QQ: 915571300   子逸

5.       版权所有: 子逸(博客园);转载请注明出处;

 

 

 


转载于:https://www.cnblogs.com/ziyiFly/archive/2008/10/21/1315641.html


推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
author-avatar
李伯翔刚瑋嘉军
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有