DevExpress.XtraGrid

    Developer Express(以下简称dev) 这个第三方控件是VS2005自带的datagridview控件的重写版本.对于一些grid外观,模板列的设置有非常简单的方法.而且控制起来基本和datagridview一样.所以还是比较方便的.把dev控件拖到窗体以后,会发现多了两个控件gridcontrol1,gridview1,下面针对这期间使用dev的一些总结写在下面(主要是连接数据库,绑定字段和模板列的设置):  
    1. 设置数据源:  
    string sql = "select fid,fname from dual";  
    DataTable dt = DALUse.Query(sql).Tables[0];  
    gridControl1.DataSource = dt;  
    *:Daluse是项目数据库连接基类,不用特别理会  
    2.绑定字段:  
    这部分工作主要是在Designer中进行的,dev的Designer设计器提供了非常方便的设置方式.我么可以省去敲代码,直接在设计器中就可以完成了.在左边选Columns,添加完列以后,在列的FieleName属性添加你要绑定列的字段名(ps:比如我的连接SQL语句是:select fid,fname from dual.我想要把fid绑定到列1.那就在列1的FieldName属性写FID就可以了   ),这里有非常重要的一点,对于Oracle数据库,所有的在设计器里写的程序中的字段名必须大写,否则可能绑定不上字段,sqlserver没有这个限制.通过代码其实也可以实现,具体代码如下:  
    gridView1.Columns[0].FieldName = "FID";  
       
    *:gridcontrol只用在设置数据源,以后的操作大多都有gridview这个控件了.他们是一体的,可以在页面的设计代码中找到将他们关联的一句话,这是系统自动写的:gridcontrol1.mainview=this.gridview1.  
       
    2. 模板列的设置:  
    模板列可以很轻松的让用户实现在表格中进行查找编辑.  
    同样,这部分工作在dev的Designer中进行.在左边选In-Place Editor Repository,上面的ADD提供了比较丰富的模板列类型,从中选取一个就可以了.模板列建好以后就要和我们当前有的数据列进行绑定了.返回到Columns中,假如列1是我们想设定的,在他的属性中找到ColumnEdit.选择我们加进去的模板列就可以了.对于模板列我们最常用的还是LookUpEdit.  
    这里简单说下他的设置和用法:  
       
    LookUpEdit是弹出的一个小的grid,从它里面我们可以实现自动筛选里面的信息.  
    首先从In-Place Editor Repository中添加LookUpEdit.取名为Re1.然后.在他的Columns属性中添加3列.Caption依次为:编号,姓名,性别.FieldName依次为:FID,FNAME,FSEX.然后将Re1的NullText设置成空.  
    AutoSearchColumnIndex属性设置为2.ImmediatePopup属性设置为True.  
    SearchMode设置为OnlyInPopup.  
    然后将这个模板列附加到我们上面提到的列1(也就是将列1的ColumnEdit属性设成Re1)  
    最后我们还要在代码里面给Re1绑定数据源和显示项.  
       
    Re1.DataSource = DALUse.Query("select fid,fname,fsex from dual").Tables[0];  
    Re1.DisplayMember = "FSEX";  
    Re1.ValueMember = "FNAME";  
    *:对于Oracle数据库字段一定要用大写,切记!!  
       
    至此,我们的LookUpEdit模板列就设置完成了,它现在已经实现了通过性别列检索,然后将姓名列附到我们的列1上.  
    对于LookUpEdit可以实现过滤主要是AutoSearchColumnIndex和SearchMode属性.可以参见帮助知道它们的用法: ms-help://DevExpress.NETv7.2/DevExpress.XtraEditors/DevExpressXtraEditorsControlsSearchModeEnumtopic.htm  
       
       
    Ps:  
    //去掉上面的筛选条  
    gridView1.OptionsView.ShowGroupPanel = false;  
       
    //设某一列只读或者不可编辑  
    gridView1.Columns[0].OptionsColumn.AllowEdit = false;  
    gridView1.Columns[0].OptionsColumn.ReadOnly = false;  
       
    //设某一列文字和标题局中显示                  gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;  
                       gridView1.Columns[0].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;  
       
    //去掉某一列上面的自动筛选功能(Filter)                   gridView1.Columns[0].OptionsFilter.AllowAutoFilter = false;  
    gridView1.Columns[0].OptionsFilter.AllowFilter = false;                gridView1.Columns[0].OptionsFilter.ImmediateUpdateAutoFilter = false;  
       
    //设置冻结列(左冻结)  
    gridView1.Columns[0].Fixed= DevExpress.XtraGrid.Columns.FixedStyle.Left;  
       
    //得到单元格数据(0行0列)  
    string ss=gridView1.GetRowCellDisplayText(0, gridView1.Columns[0]);  
    string ss = gridView1.GetRowCellValue(0, gridView1.Columns[0]);  
       
    //设置单元格数据(将0行0列的单元格赋值123)  
    gridView1.SetRowCellValue(0, gridView1.Columns[0], "123");  
       
    //手动添加dev的列  
    DevExpress.XtraGrid.Columns.GridColumn Col1=new DevExpress.XtraGrid.Columns.GridColumn ();  
    Col1.FieldName="FID";  
    Col1.Visible=true;  
    Col1.VisibleIndex=gridView1.Columns.Count;  
    gridView1.Columns.Add(Col1);  
    //设置自动增加的行号,需要先添加给gridview添加事件CustomDrawRowIndicator  
            private void gridview_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)  
            {  
                if (e.Info.IsRowIndicator && e.RowHandle >= 0)  
                    e.Info.DisplayText = (e.RowHandle + 1).ToString();  
            }  
       
       
    //添加datatable数据行,数据列  
                        DataTable dt = new DataTable();  
                        dt.Columns.Add("Col1");  
                        DataRow dr = dt.NewRow();  
                        dr[0] = "123";  
                        dt.Rows.Add(dr);  
       
    *以上这些都可以在Designer中进行设置,而不用去敲代码  
                                                 
       
    对于第三方控件的整体修改和保存,具体说明如下:  
    1.     删除: (修改了dgvdel里的datagridviewdel方法)  
    public static void datagridviewdel_Dev(DevExpress.XtraGrid.Views.Grid.GridView Mydgv)  
            {  
                if (MessageBox.Show("你确定要删除选中的记录吗?", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)  
                {  
                    int iSelectRowCount = Mydgv.SelectedRowsCount;  
                    
                    if (iSelectRowCount > 0)  
                    {  
                        Mydgv.DeleteSelectedRows();  
                    
                    }  
        
                }  
            }  
       
    2. 新增: (对于新增,其本身的AddNewRow方法就可以做到)  
       
    private void btn_add_Click(object sender, EventArgs e)  
            {  
    gridView1.AddNewRow();     
    }  
    具体如果对于新加行还有什么特别的设置,可以在它gridView1_InitNewRow事件中填写:  
    private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)  
            {  
                ColumnView View = sender as ColumnView;  
                View.SetRowCellValue(e.RowHandle, View.Columns[0], gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount - 2), gridView1.Columns[0])); //复制最后一行的数据到新行  
                View.SetRowCellValue(e.RowHandle, View.Columns[1], gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount - 2), gridView1.Columns[1])); //复制最后一行的数据到新行  
            }  
       
    3.     保存 (第三方控件提供的RefreshData和RefreshDataSource方法对于保存数据都不好使,最后还是使用了Dgvsave的datagridviewsave方法,用这个方法就可以)  
       
       
       
    注:代码中出现多gridView1全为第三方控件的gridView.  
       
    示例:  
    去掉上面的”Drag a column header here to group by that column”  
    我们拖动一个gridcontrol控件后,在出现上会出现一下效果:  
    他默认的好多地方都是用英文表示出来的,所以我们得用一些相关的属性设置来达到我们实际想要达到的效果.首先就是要去掉上面的一个英文条”Drag a column header here to group by that column”.我们可以通过手工设置和代码编写来实现,以后针对第三方控件的属性都可以用这两种方法来实现.手工设置:点击左下角的”Run Designer”按钮.  
    这样我们就进入了Dev的设计器(所有的对于控件的控制都可以在这里设置).然后点击左边的Main选项卡中的Views项.有边栏目里会出现N多属性,我们找到OptionViews,展开它,然后将里面的ShowGroupPanel属性设成false就OK了.代码编写:  
    我们可以直接在构造函数或者页面的打开事件中写入代码:  
    gridView1.OptionsView.ShowGroupPanel = false;  
    两种方法可以达到同样的效果.  
    设置外观  
    接下来我们来设置它的外观.Dev给我们提供了很多外观的模板,这样使得我们不用在通过复杂的代码来设置他的外观,我们直接用手工设置就可以完成了!点击Dev设计器中左边的Appearance选项卡的Style Schemes项:  
    通过在里面设置外观,然后点击右小角的Apply按钮就可以很轻松的设置各种各样的外观了.  
    去掉控件默认的Filter功能出现英文的情况  
    我们按照上面所讲的方法给Dev添加列后,在点击列头的小按钮的时候会出现这样的效果(出现了我们不想看到的英文):  
    这个对于我们来说是比较讨厌的.我们可以在Dev的设计器中消灭它.点击设计器中左边的Main选项卡的Columns项.选择你想设置的列,然后点击右上角他们的选项卡:  
    选择Filter options选项卡,然后将里面的AllowAutoFilter,AllowFilter,ImmediateUpdateAutoFilter属性分别设成false就可以了.这样这列的AutoFilter功能就去掉了(仅限于这列)!如果你够细心的话,你会发现上面的选项卡Column options里面的属性也都是特别使用的:  
    这里面的属性不用说,我想你也知道怎么用了(他也是只针对一列设置的).  
    关闭右键点击列头会出现英文的情况:  
    在Dev的设计器中选择左边Main选项卡中的Views项.找到OptionsMenu,然后展开,将里面的EnableColumnMenu设成false就可以了.  

DevExpress中gridView行号的显示

我们在进行开发的时候,很多地方希望dataGridview或girdView显示行号,这里我来说一下两种的实现方法

在girdView中很简单很好实现,我在这里写一下代码,具体其他功能可以看其带的DEMO,

 
private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
        {
            if (e.Info.IsRowIndicator && e.RowHandle >= 0)
            {
                e.Info.DisplayText = (e.RowHandle+1).ToString();
                if(e.RowHandle<1000)
                    this.gridView1.IndicatorWidth=35;
                else if(e.RowHandle<10000)
                    this.gridView1.IndicatorWidth =40;
                else if(e.RowHandle<100000)
                    this.gridView1.IndicatorWidth =50;
                 else 
                    this.gridView1.IndicatorWidth =60;
  } }我们再看一下vs自带的dataGridView中行号的实现方法 private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dataGridView1.RowHeadersWidth - 4, e.RowBounds.Height); TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), dataGridView1.RowHeadersDefaultCellStyle.Font, rectangle, dataGridView1.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right); }



一套Developer Express控件包 For Delphi7Developer Express控件简介Express Scheduler Suite可以建立类似于Outlook中日历那样的空间,计划任务。ExpressQuantumGrid Suite一个超级牛的Grid控件,不要告诉我不知道什么是Grid,其中Filter功能也是非常厉害的。ExpressBars Suite非常厉害非常厉害的工具条菜单控件。ExpressPrinting System 打印控件,可以和ExpressQuantumGrid 完美连接,还没发现有没有报表功能,要不就是没有报表功能,完美的ExpressQuantumGrid控件就可以代替了。ExpressQuantumTreeList Suite 非常牛的树状控件,跟ExpressQuantumGrid 结合起来很厉害的。ExpressNavBar 是用来做类似于XP下的浏览器左边的导航条的,非常地帅。ExpressLayout Control 好像是界面布局的控件。ExpressDBTree Suite非常好用的数据库树形列表控件。ExpressMasterView专门用作总单细单甚至多层的关系的GRID显示,它的效率比ExpressQuantumGrid Suite还要高,不过功能不是很强。ExpressDBTree Suite 结合数据库表进行像WINDOWS中浏览器中树结构显示的控件。ExpressOrgChart 结合数据库表进行组织结构显示的控件。ExpressVerticalGrid Suite 表结构以垂直方式(卡片样式)的GRID显示,一般来说,GRID适合用来显示,而VerticalGrid适合用来编辑数据。下面的控件还不知道有什么用,请有知道的介绍一下。ExpressFlowChartExpressSpreadSheet (includes Kylix support) 下面我们开始安装1、 首先关闭delphi7,如果您正在运行着它的话。 2、 安装ExpressLayout Control 1.1.11 for d7 ok3、 安装ExpressBars Suite 5.1.3 ok4、 安装ExpressDBTree Suite Version 1.3.1 ok5、 安装ExpressOrgChart 1.3.2 ok6、 安装ExpressFlowChart.v1.3.2 ok7、 安装DevExpress ExpressMasterView 1.2.1 ok8、 安装ExpressSpreadSheet (includes Kylix support) 1.1.12 ok9、 安装ExpressNavBar v1.3.1 ok10、安装ExpressPrinting System 3.1 ok11、安装ExpressQuantumGrid Suite 5.0 ok12、安装Express Scheduler Suite 1.0 13、安装ExpressQuantumTreeList Suite v4.0.2 14、安装ExpressVerticalGrid Suite 3.0.2 注:经过我反复试验发现Express Scheduler Suite 1.0 ExpressQuantumTreeList Suite v4.0.2 ExpressVerticalGrid Suite 3.0.2 与ExpressQuantumGrid Suite 5.0有冲突只要其中有任何两种控件安装,就不能装入扩展控件包ExpressExtendedEditors Library 5,Grid会少很多控件。15、运行Delphi_7,出现第一个提示框后, 按否在Delphi 7中通过Tools->Environment Options->Library->Library path菜单路径打开Diredtories窗口。 将含有以下路径: ......Developer Express IncExpressDataControllerDelphi 7Lib ......Developer Express IncXP Theme ManagerDelphi 7Lib ......Developer Express IncCX LibraryDelphi 7Lib ......Developer Express IncExpressEditors Library 5Delphi 7Lib ......Developer Express IncExpressPageControl 2Delphi 7Lib ......Developer Express IncExpressQuantumGrid 5Delphi 7Lib 删除,重新添加为,或保留一份修改为: ......Developer Express IncExpressDataControllerDelphi 7Sources ......Developer Express IncXP Theme ManagerDelphi 7Sources ......Developer Express IncCX LibraryDelphi 7Sources ......Developer Express IncExpressEditors Library 5Delphi 7Sources ......Developer Express IncExpressPageControl 2Delphi 7Sources ......Developer Express IncExpressQuantumGrid 5Delphi 7Sources 18、到Grid 5.0目录下的完美补丁目录19、将以下2个文件:cxExtEditorsVCLD7.bpl dclcxExtEditorsVCLD7.bpl 解压到操作系统的System目录(注:W2K/WinXP中应为system32目录)中覆盖原文件。 20、将压缩包中ExpressEditors Library 5目录解压到Program FilesDeveloper Express Inc下覆盖原安装目录; 21、将压缩包中ExpressPageControl 2目录解压到Program FilesDeveloper Express Inc下覆盖原安装目录; 22、将压缩包中ExpressQuantumGrid 5目录解压到Program FilesDeveloper Express Inc下覆盖原安装目录; 23、将压缩包中Bpl目录解压到BorlandDELPHI7Projects下覆盖原目录。 24、到此全部安装完毕,对于ConvertGrid3Demo和ConvertGrid3MasterDetailDemo还必须同时安装“DevExpress ExpressQuantumGrid Suite v3.22 for Delphi7”,才行!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值