//不显示内置的导航条。
            gc1.UseEmbeddedNavigator = false;

            //不显示分组的面板
            gv1.OptionsView.ShowGroupPanel = false;
            gv2.OptionsView.ShowGroupPanel = false;

            //自动改变行高适应内容
            gv1.OptionsView.RowAutoHeight = true;
            gv2.OptionsView.RowAutoHeight = true;

            //允许自动合并单元格
            gv1.OptionsView.AllowCellMerge = true;

            //如果主从表中,没有找到从表内容也要显示(默认是不显示的)
            gv1.OptionsDetail.AllowExpandEmptyDetails = true;

            //显示自动筛选行(效果跟Excel的自动筛选差不多)
            gv2.OptionsView.ShowAutoFilterRow = true;

            //使得GridView不能编辑
            gv1.OptionsBehavior.Editable = false;
            gv2.OptionsBehavior.Editable = false;

            //内置编辑器显示的模式
            gv1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click;

            //主从表显示的功能是否可用
            //gv1.OptionsDetail.EnableMasterViewMode = false;

            //如果显示了主从表,每点开个加号,就会显示一个Tabs,里面往往显示了两个面板。
            //事实上没必要这样干的。一般选择关闭。关闭的对象是主GridView的此项属性。
            gv1.OptionsDetail.ShowDetailTabs = false;

            
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();

        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            //设置连接字符串
            DbHelperSQL.ConnectionString = DbHelperSQL.CreateConnectionString(@"BUDDHAS\SQLEXPRESS", "sa", "00000", "RTDMES");

            DataSet ds = new DataSet();
            //父GridView的数据
            string sql = "select sc_prno,sc_prna from mespb04h";
            DbHelperSQL.QueryD(sql,ds,"main");

            //子GridView的数据
            sql = "select pa_name,pa_no,sc_prno from mespb09h";
            DbHelperSQL.QueryD(sql,ds,"son");

            //这个是显示主从表的关键,一、GridControl通过检查DataSet.Relations的内容来分析数据
            //二、关键名必须与设计GridView的层级关系的level name相同,否则,结果在意料之外。
            DataRelation relation = new DataRelation("aa", 
                                                     ds.Tables["main"].Columns["sc_prno"], 
                                                     ds.Tables["son"].Columns["sc_prno"]);
            
            ds.Relations.Add(relation);

            //这也是一个关键,不能直接设为:ds,必须指明到表。
            gc1.DataSource = ds.Tables["main"];
        }

  上面的代码是显示一个主从表。显示主从表有些技巧。文档中还没有说出来,俺摸索了一个晚上才搞出来。像上面看到的,事实上很简单。

  上面DbHelperSQL是我从CodeMatic 2.0中搞出来的,我自己修改了一下。

  上面代码的效果图如下:

  

  

  对于GridView,我有两大疑问:

  一、显示主从表,这个解决了。

  二、分组显示,这是报表中经常要用到的,GridView的解决方案很简捷,只需将相应列的GroupIndex属性设一下就成了:

    在gridcontrol上击右键,选run designer进入设计模式。在columns栏内点retrieve fields将数据源中所有字段导入进来。

 点需要分组的字段,在其属性栏的groupindex依次设为0,1..,在不需要分组的字段上保持-1不变。

 进入feature browse/summary /group sammary /summary items中增加要分组进行统计的字段。这里要设其fieldname字段名,showingroupcolumnfooter 显示在哪一栏位,sammarytype显示分组后统计的字段是进行sum(求和,求平均,最大值,最小值等)

 在grouping /behavior /grneral /可设两个属性
autoexpandallgroups 设为true时将所有分组展开,反之折叠。
 showgroupedcolumns是否在网格是显示你分组依据的哪些字段,false为不显示

   同样在feature browse/summary /total sammary 这些不是针对分组,而是针对所有行。在summaryitem中对要处理的列进行设置,主要设置需要处理列的column,summarytype.

当然设好后要将optionview的showfooter属性设为true,表格底部会出现一summary行。

  补:另有三个属性需要用,我们查询的结果一般是只读的,并且对每一个单元格最好无焦点,故可同时选所有字段,设allowedit为false;allowfocus为false;readonly为true;

为XtraGrid的GridView加行号。示例代码如下:

        //设置行指示器的宽度(行指示器就是最左边那列什么都不显示的列)
        //默认情况下,如果要在里面显示行号的话,宽度会不足,数字显示不清晰
        //所以要改一下宽度
        gv1.IndicatorWidth = 20;

        private void gv1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
        {
            if (e.Info.IsRowIndicator && e.RowHandle >= 0)
            {
                e.Info.DisplayText = (e.RowHandle + 1).ToString().Trim();
            }
        }

  效果图如下:

  

  常用代码:

//添加分组统计字段
gridView1.GroupSummary.Add(SummaryItemType.Count, "Product Name", gridView1.Columns["Product Name"]);
gridView1.GroupSummary.Add(SummaryItemType.Average, "Unit Price", gridView1.Columns["Unit Price"]);

//设置分组统计字段的显示格式
((GridSummaryItem)gridView1.GroupSummary[gridView1.GroupSummary.Count - 1]).DisplayFormat = "AVR={0:c}";

//设置分组字段
gridView1.Columns["Discontinued"].GroupIndex = 0;

//打开所有分组
gridView1.ExpandAllGroups();

//为控件画边框
ControlPaint.DrawBorder3D(e.Graphics,
                          r, 
                          (e.Info.State == DevExpress.Utils.Drawing.ObjectState.Pressed ? Border3DStyle.SunkenOuter

: Border3DStyle.RaisedInner));

//焦点单元格的列
gridview1.FocusedColumn

//焦点单元格所在行的行号
gridview1.FocusedRowHandle

//焦点单元格的值
gridview1.FocusedValue

//指定单元格显示的字符串值
gridview1.GetRowCellDisplayText(int rowHandler,string feildName)

//指定单元格的值
gridview1.GetRowCellValue(int rowHandler,string feildName)

//设置焦点单元格所在行指定列的值
gridview1.SetFocusedRowCellValue(GridColumn col,object value)

//设置焦点单元格的值
gridview1.SetFocusedValue(object value)

//设置指定单元格的值
//有了这个函数,就可以手工创建行了。
gridview1.SetRowCellValue(int rowHandler,string feildName,object value)
gridview1.SetRowCellValue(int rowHandler,GridColumn col,object value)

//添加新行的方法

gv1.AddNewRow();
foreach (GridColumn col in gv1.Columns)
{
  //用RowCount-1的办法是不行的
  //gv1.SetRowCellValue(gv1.RowCount-1, col, "aaaaa");
  gv1.SetRowCellValue(gv1.FocusedRowHandle, col, "aaaaa");
}

gv1.UpdateCurrentRow();

//根据绑定的数据源自动产生列

gv1.PopulateColumns();

//为列添加下拉列表(加其他类型如日期、UpDown同理)
RepositoryItemLookUpEdit ri = new RepositoryItemLookUpEdit();
//ri.PopupWidth = 200;
ri.DisplayMember = "sc_prna";
ri.ValueMember = "sc_prno";
DataTable dt1 = DbHelperSQL.QueryT("select sc_prno,sc_prna from mespb04h");
ri.DataSource = dt1;
gv1.Columns["sc_prno"].ColumnEdit = ri;

Devexpress GridControl使用的更多相关文章

  1. DevExpress GridControl使用方法

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 (1).gridView.AddN ...

  2. 实现DevExpress GridControl 只有鼠标双击后才进行修改数据

    1. 实现DevExpress GridControl 只有鼠标双击后才进行修改数据:修改GridView.OptionsBehavior.EditorShowMode属性为Click 2. 实现De ...

  3. DevExpress GridControl 使用方法技巧 总结 收录整理

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 ().gridView.AddNe ...

  4. DevExpress GridControl使用(转)

    DevExpress GridControl使用 (一)原汁原味的表格展示 Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多 ...

  5. Devexpress GridControl z

    http://minmin86121.blog.163.com/blog/static/4968115720144194923578/ 1 AllowNullInput=False; --Devexp ...

  6. DevExpress GridControl 单元格添加进度条(ProgressBar)

    首先可以使用DevExpress GridControl 自带的进度条控件. 但是我要用一个方法来设置所以的单元格进度,而不是每个单元格都要设置一遍,同时我想要根据进度值不同,进度条显示不同的颜色. ...

  7. DevExpress GridControl+UserControl实现分页

    志向不过是记忆的奴隶,生气勃勃地降生,但却很难成长. —— 莎士比亚 时隔一年,我写随笔真的很随意,想起了就来博客园写写,想不起来就任由懒惰支配着我.不过我到觉得这不是什么坏事,你不用为了完成某事而让 ...

  8. DevExpress GridControl 显示外部图片

    如果数据源中只包含图片的链接,如何在DevExpress GridControl的一列中显示外部图片? 要实现该功能,可通过非绑定列的方式来实现.具体实现方法如下: 1.    创建了一个非绑定列并设 ...

  9. DevExpress GridControl如何取消默认的显示方式

    DevExpress GridControl如何取消默认的显示方式,就是表格中好像还嵌套了一个表格,下面有个折叠‘+’按钮,我需要显示的是就是单表格的样式效果. 默认的样式如图: 我需要显示的效果图: ...

  10. 在DevExpress GridControl中添加进度条控件 z

    首先可以使用 DevExpress GridControl 自带的进度条控件. 但是我要用一个方法来设置所有的单元格进度,而不是每个单元格都要设置一遍,同时我想要根据进度值不同,进度条显示不同的颜色. ...

随机推荐

  1. 降临(线段树优化dp)

    降临 选定点i会有代价\(c_i\),如果一个区间j内的点全被选择,就可以获得回报\(p_j\).点数和区间个数\(<1e5\). 还以为是线段树优化网络流(50万个点200万条边看上去很可做的 ...

  2. Linux下oracle开机自启动服务

    如果每次重启操作系统都要进行以上操作好麻烦,那么如何让Oracle作为系统服务在开机的时候自动启动呢? Oracle在$ORACLE_HOME/bin下提供许多对数据库进行操作的脚本,其中dbstar ...

  3. CI框架源码学习笔记1——index.php

    做php开发一年多了,陆陆续续用过tp/ci/yii框架,一直停留在只会使用的层面上,关于框架内部的结构实际上是不甚了解的.为了深入的学习,决定把CI框架的源码从头到尾的学习一下, 主要因为CI框架工 ...

  4. Build SSH for Development on Windows Subsystem for Linux

    It seems that Windows Subsystem for Linux (WSL) is getting much more mature than the time when it fi ...

  5. Qt(Mac) 进程的启动

    试了半天,终于成功了!!!!(教程都是Windows的) 1.与Windows不一样,Mac的要在了路径前加上open: 2.例 图为把一个按钮与TextEdit程序进程联系,点击后就可以启动Text ...

  6. SP7258 SUBLEX - Lexicographical Substring Search

    \(\color{#0066ff}{ 题目描述 }\) 给定一个字符串,求排名第k小的串 \(\color{#0066ff}{输入格式}\) 第一行给定主串(len<=90000) 第二行给定询 ...

  7. 谁能赢呢? BZOJ 2463

    题目描述 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问 ...

  8. 合并queryset

    今天在实现搜索时遇到一个问题,如何同时搜索model里面的title以及content和category字典 contents = Blog.objects.filter(content__conta ...

  9. flask 坑

    no python application found, check your startup logs for errors 日志里面报类似于“Mon Mar 23 10:26:49 2015 – ...

  10. 查看和导入证书(.cer / .pfx)

    作为文件形式存在的证书一般有这几种格式: 1.带有私钥的证书 由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形 ...