如何用DXperience GridControl添加复选框
如何动态加载DXperience Master-Detail的Detail数据
实现过程说明如下:
1、程序开始时只加载主表的数据,明细表内容不加载;
2、如果选择了新的主表对象,根据新主表对象ID,动态从数据库中加载相关明细表的数据,并合并到数据源的明细表中,同时把该主表的ID在List中缓存(以避免重复加载);
下面以nwind.mdb数据库中的Orders和Order Details主从表为列说明具体过程。
做到一半发现MDB数据不支持DataSet一些特性,感觉很不爽,临时更换为SQL数据库,使用SQL 2005示例数据库AdventureWorksDB,以Sales.SalesOrderHeader和Sales.SalesOrderDetail为例说明具体过程。
DevExpress DXperience教程教程环境必备:
1、SQL 2005示例数据库AdventureWorksDB下载及安装,可以下载并安装SQL 2005 示例数据库 AdventureWorksDB;
2、IDE环境:VS.Net2008;
3、DXperience组件版本:9.2.6
代码只用来说明问题,没有详细的错误处理机制等。
1、运行VS环境,并建立一个解决方案;
2、如果您没有示例数据库,可以到上面的下载地址去下载并安装;
3、主窗体SmarTestMain中加入一个GridControl,并建立两个视图,名称及关系如下图所示:
4、向项目中添加一个DataSet数据集DSSalesOrder.xsd,添加一个到AdventureWorks数据库的连接,如下图所示:
5、把表SalesOrderHeader和SalesOrderDetail拖到DataSet设计器,自动建立关系,重新命名关系SOHeaderDetail,如下图所示:
6、修改dataset中表SalesOrderDetail的查询,在Fill,GetData()上点击右键弹出菜单,选择Configure,弹出配置窗体,在select语句后面加上查询条件
1
where [email=SalesOrderID=@SalesOrderId]SalesOrderID=@SalesOrderId[/email]
下一 步;方法名称修改为
1
FillBySalesOrderId/GetDataFillBySalesOrderId;
下一步结束。
7、设置gridControl1的数据源并设置其DataMember=SalesOrderHeader,在grindControl1的Level1上点击,并选择菜单Change LevelName,设置levelname=SOHeaderDetail,注意与数据集中定义的关系是一致的,如下图所示:
8、运行GridControlRunDesigner,选择明细表视图gvOrderDetails,点击Columns/Retrieve Fields以自动生成明细视图的列,将两个gridViewOptionsView.ColumnAutoWidth=false。
9、接下来的任务是写个简单的数据访问类,包括两个方法,如下所示:
public static DSSalesOrder getSalesOrderAll()
{
DSSalesOrder dataSet = new DSSalesOrder();
using (SqlConnection con = new SqlConnection(Properties.Settings.Default.AdventureWorksConnectionString))
{
using (DSSalesOrderTableAdapters.SalesOrderHeaderTableAdapter ta = new SmarTest.Template.DSSalesOrderTableAdapters.SalesOrderHeaderTableAdapter { Connection = con })
{
ta.Fill(dataSet.SalesOrderHeader);
}
}
return dataSet;
}
public static DSSalesOrder getSalesOrderDetailByOrderId(int salesOrderId)
{
DSSalesOrder dataSet = new DSSalesOrder();
using (SqlConnection con=new SqlConnection(Properties.Settings.Default.AdventureWorksConnectionString))
{
using (DSSalesOrderTableAdapters.SalesOrderDetailTableAdapter ta = new SmarTest.Template.DSSalesOrderTableAdapters.SalesOrderDetailTableAdapter { Connection = con })
{
ta.FillBySalesOrderId(dataSet.SalesOrderDetail, salesOrderId);
}
}
return dataSet;
}
关键是第二个方法,不是返回所有明细数据,而是根据主表ID,返回相关的明细。
下面的步骤都很关键,一定要注意!
10、设置主表视图 gvOrders属性:
this.gvOrders.OptionsDetail.AllowExpandEmptyDetails = true;(此属性在整个项目中起一个核心的作用,如果不设置此属性,即使其它都正确,还是不会引发gvOrders_MasterRowGetChildList事件。
)
this.gvOrders.OptionsDetail.AllowOnlyOneMasterRowExpanded = true;(可以不设置)
this.gvOrders.OptionsBehavior.Editable = false;(这里是因为使用了RowClick事件,二者有关系,所以设置)
12、gvOrders视图必须响应的事件
List
mSalesOrderCach = new List();
int mSalesOrderId = -1;
private void gvOrders_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
var row = gvOrders.GetDataRow(e.RowHandle) as DSSalesOrder.SalesOrderHeaderRow;
mSalesOrderId = row.SalesOrderID;
gvOrders.ExpandMasterRow(e.RowHandle);//此语句非必须,主要是使新的主表焦点行立即展开明细表,即使不包括数据。
否则需要点击主表的焦点行的“+”展开。
}
private void gvOrders_MasterRowGetChildList(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowGetChildListEventArgs e)
{
if (mSalesOrderCach.Contains(mSalesOrderId)) return;
using (DevExpress.Utils.WaitDialogForm wdf = new DevExpress.Utils.WaitDialogForm("向服务器请求数据..."))
{
var dsSalesOrder = gridControl1.DataSource as DSSalesOrder;
using (DSSalesOrder ds=dbHelper.getSalesOrderDetailByOrderId(mSalesOrderId))
{
if(ds.SalesOrderDetail.Rows.Count>0)
{
mSalesOrderCach.Add(mSalesOrderId);
dsSalesOrder.SalesOrderDetail.Merge(ds.SalesOrderDetail);
}
}
}
}
怎样才能不显示子表的 ViewCaption?
设置主表视图
1
gvOrders.gvOrders.OptionsDetail.ShowDetailTabs = false;
即可DevExpress仿Metro UI?
DevExpress WinForms控件的编码的UI测试扩展,是一个Microsoft编码的UI测试(CUIT),旨在帮你创建用户界面自动测试。
通过这些测试,你可以执行的UI测试函数和验证UI控件。
此功能只包含在DXperience Universal版本授权中。
DevExpress WinForms v12.1新功能 - Metro灵感的触摸控件
Tile Control
DevExpress WinForms Tile Control 允许你模拟革命性的Windows8用户界面。
新版本新增了大量的增强功能,包括控制/分组头部和特大标题选项。
Docking和Metro UI
DevExpress WinForms Docking Library新增了许多功能,包括为Windows 8 Metro UI和WinForms应用程序交互提供一种新的方式。
网格控件
WinForms数据网格的功能更加强大和完备,用户请求功能得到了很大的增强,包括查找面板的增强。
Ribbon
很像微软的Ribbon UI,DevExpress WinForms Ribbon控件现在可以完全支持最终用户在运行时自定义。
富文本编辑器
新版本的DevExpress WinForms富文本编辑器支持悬浮对象和类似于微软Word的风格样式。
Scheduler
DevExpress WinForms Scheduler新版本现在包括综合范围控制的支持,新的动画效果和资源树过滤选项。
TreeList
新的HTML文本格式和扩展的剪贴板支持选项,使DevExpress WinForms TreeList成为业务需求广泛的强大可视化工具。
Layout Control
新版本的DevExpress Silverlight布局控件,包含扩展布局和数据字段的功能,可以帮助你在最短的时间内进入市场。
报表
屡获殊荣的DevExpress WinForms报表,新版本可以为你的最终用户提供新的报表库选项。
图表
新版本性能得到了增强,主要功能如自动数据类型检测、内置提示和支持十字型光标,DevExpress WinForms图表使您能够专注于客户的需求,在最短的时间内为客户提供商业智能解决方案。
Pivot Grid
DevExpress WinForms PivotGrid新功能包括过滤汇总值和OLAP浏览选项改进,使你可以为市场提供令人信服、直观的分析解决方案。
Range Control
新版本的DevExpress WinForms Range Control让你的最终用户很容易从两个数据范围中进行选择。
DevExpress WinForms Range Control 还能为DevExpress Scheduler、Chart和PivotGrid提供集成支持。
devexpress dxperience 12.2怎么注册
你好,朋友。
解决办法如下:
1、先将Delphi程序里面有关套件包全部删除掉
2、安装的程序目录及控件安装目录删除
2、打开注册表编辑器,
KCU--->Software---->Borland---->Delphi---->选择安装的版本(如7.0)---->Known Packages里面有关的键值删除掉DXperience本地化是什么意思?
DXperience & XAF 默认的语言是英文的,也就是说你看到的所有信息都是e文。
不同国家和地区的开发者在使用时,需要把它翻译成自己的语言,这就是本地化。
对于我们来说就是汉化。
这么些语言都是废话,只有“汉话”是要点。