DevExpress gridcontrol如何分组显示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DevExpress gridcontrol如何分组显示?相关的知识,希望对你有一定的参考价值。

修改列(监测站)的GroupIndex为0后效果如下图,没有分好组的grouprow?这是为什么,应该怎么改?

一、手动方式

1、添加分组项,Run Designer--Group Summary Items--Add,设置计算添加SummaryType:Count总计


2、设置显示格式

  2.1 格式:0,效果:显示分组的列标题,如:Order ID

 2.2 格式:1,效果:显示分组后的项,如:10248

3、效果如下:

二、代码


            gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "分组1");  //添加分组1,如果不是count,则名称必须与字段名对应
            gridView1.GroupFormat = "1 2";  //默认"0: [#image]1 2"; 字段名称:数据 计数=?

            gridView1.Columns["部门名称"].GroupIndex = 0;  //设置默认分组列


            //分组列格式
            gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Average, "id", gridView1.Columns["id"]);
            gridView1.GroupSummary[1].DisplayFormat = "AVG=0:c";


            gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "姓名", gridView1.Columns["姓名"]);
            ((DevExpress.XtraGrid.GridSummaryItem)gridView1.GroupSummary[gridView1.GroupSummary.Count - 1]).DisplayFormat = "小计:0:N0";


            gridView1.ExpandAllGroups();

效果如下:

参考技术A 在绑定数据源的情况下,可以在设计面板中直接设置与分组相关的属性即可。
如果数据是在代码中绑定的,采用如下方式分组显示数据:
//列设置
DevExpress.XtraGrid.Columns.GridColumn column = view.Columns["监测项目"];//拿到要分组的列;
if (column == null) return;
column.GroupIndex = 0; //未分组情况下,列的GroupIndex为-1,所有都是一个组;将要分组的列的GroupIndex设置为其他值;
view.GroupFormat = "0: [#image]1 "; //设置该GridView的分组显示格式GroupFormat

DevExpress.XtraGrid.GridGroupSummaryItem item = new DevExpress.XtraGrid.GridGroupSummaryItem();
item.DisplayFormat = "(站位总计: 0)";
item.SummaryType = DevExpress.Data.SummaryItemType.Count;
//item.FieldName = "站位CODE";

view.GroupSummary.Add(item);
参考技术B 你找找你是不是把允许分组的值可能设的是“False”,你看看是不是这样的追问

请问你说的那个属性具体名叫什么?

参考技术C 把你的要分组的列的groupIndex设为0本回答被提问者采纳

DevExpress使用方法GridControl总结

一、如何解决单击记录整行选中的问题

View->OptionsBehavior->EditorShowMode 设置为:Click

二、如何新增一条记录

(1)、gridView.AddNewRow()

(2)、实现gridView_InitNewRow事件

三、如何解决GridControl记录能获取而没有显示出来的问题

gridView.populateColumns();

四、如何让行只能选择而不能编辑(或编辑某一单元格)

(1)、View->OptionsBehavior->EditorShowMode 设置为:Click

(2)、View->OptionsBehavior->Editable 设置为:false

五、如何禁用GridControl中单击列弹出右键菜单

设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false

六、如何隐藏GridControl的GroupPanel表头

设置Run Design->OptionsView->ShowGroupPanel 设置为:false

七、如何禁用GridControl中列头的过滤器

过滤器如下图所示:

技术分享图片

设置 Run Design->OptionsCustomization->AllowFilter 设置为:false

八、如何在查询得到0条记录时显示自定义的字符提示/显示

如图所示:

技术分享图片

方法如下:

//When no Records Are Being Displayed private void gridView1_CustomDrawEmptyForeground(object sender, CustomDrawEventArgs e) {      //方法一(此方法为GridView设置了数据源绑定时,可用)      ColumnView columnView = sender as ColumnView;      BindingSource bindingSource = this.gridView1.DataSource as BindingSource;      if(bindingSource.Count == 0)      {           string str = "没有查询到你所想要的数据!";           Font f = new Font("宋体", 10, FontStyle.Bold);           Rectangle r = new Rectangle(e.Bounds.Top + 5, e.Bounds.Left + 5, e.Bounds.Right - 5, e.Bounds.Height - 5);           e.Graphics.DrawString(str, f, Brushes.Black, r);      }      //方法二(此方法为GridView没有设置数据源绑定时,使用,一般使用此种方法)      if (this._flag)      {           if (this.gridView1.RowCount == 0)           {                string str = "没有查询到你所想要的数据!";                Font f = new Font("宋体", 10, FontStyle.Bold);                Rectangle r = new Rectangle(e.Bounds.Left + 5, e.Bounds.Top + 5, e.Bounds.Width - 5, e.Bounds.Height - 5);                e.Graphics.DrawString(str, f, Brushes.Black, r);           }      } }

九、如何显示水平滚动条?

设置this.gridView.OptionsView.ColumnAutoWidth = false;

十、如何定位到第一条数据/记录?

设置 this.gridView.MoveFirst()

十一、如何定位到下一条数据/记录?

设置 this.gridView.MoveNext()

十二、如何定位到最后一条数据/记录?

设置 this.gridView.MoveLast()

十三、设置成一次选择一行,并且不能被编辑

this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus; this.gridView1.OptionsBehavior.Editable = false; this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;

十四、如何显示行号?

this.gridView1.IndicatorWidth = 40; //显示行的序号 private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e) {      if (e.Info.IsRowIndicator && e.RowHandle>=0)      {           e.Info.DisplayText = (e.RowHandle + 1).ToString();      } }

十五、如何让各列头禁止移动?

设置gridView1.OptionsCustomization.AllowColumnMoving = false;

十六、如何让各列头禁止排序?

设置gridView1.OptionsCustomization.AllowSort = false;

十七、如何禁止各列头改变列宽?

设置gridView1.OptionsCustomization.AllowColumnResizing = false;

 

出处:https://www.cnblogs.com/starksoft/p/4936517.html

=======================================================================================

devexpress表格控件gridcontrol设置隔行变色、焦点行颜色、设置(改变)显示值、固定列不移动(附源码)

介绍一些常用的gridcontrol设置。

1、设置隔行变色。首先设置显示隔行变色,步骤:OptionsView-->EnableAppearanceEvenRow-->true和OptionsView-->EnableAppearanceOddRow-->true;然后设置奇数行和偶数行样式颜色等:Appearance-->EvenRow和Appearance-->OddRow。设计完成后,设计器出现隔行变色效果,如图:

技术分享图片

2、设置奇偶行样式时,会看到其他行样式。Appearance-->FoucsedRow就是焦点行颜色,设置后可突出显示焦点行样式,如图所示:

技术分享图片

3、设置显示值,有个两种方法。第一种可以在如图所示地方设置,列显示出来就会加上单位元;用的最多的一般是设置日期样式yyyy年MM月dd日:

技术分享图片

第二种可使用代码改变,代码如下:

        /// <summary>
        /// 改变显示值
        /// </summary>
        private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
        {
            if (e.Column.FieldName == "A3")
            {
                if (e.Value.ToString() == "1")
                    e.DisplayText = "男";
                else
                    e.DisplayText = "女";
            }
        }

4、有时表格列太多,需要拖动查看,但是又希望某些列能始终固定不移动。这个时候就可以设置该列为固定列了,属性如图所示:

技术分享图片

5、运行效果图:

技术分享图片

 附源码:http://files.cnblogs.com/files/starksoft/demo006.rar

附加内容:根据条件改变行的样式(字体颜色、背景颜色、渐变色)

技术分享图片
private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
            int hand = e.RowHandle;//行号
            if(hand<0)
            {
                return;
            }
            DataRow dr = gridView1.GetDataRow(hand);
            if (dr == null)
                return;

            //int selectedHandle = gridView1.GetSelectedRows()[hand];
            if (gridView1.GetRowCellValue(hand, "CODE").ToString().Contains("5"))
            {
                e.Appearance.ForeColor = Color.Red;//字体颜色
                e.Appearance.BackColor=Color.Linen;//行背景颜色
                //e.Appearance.BackColor2 = Color.Blue;//渐变颜色
            }
        }
技术分享图片

 技术分享图片

 

 

出处:https://www.cnblogs.com/starksoft/p/4936207.html

以上是关于DevExpress gridcontrol如何分组显示?的主要内容,如果未能解决你的问题,请参考以下文章

DevExpress的GridControl的实时加载数据解决方案(取代分页)

设置DevExpress GridControl控件时间列显示时分秒样式

在Winform中如何实现GridControl数据导出到word,pdf文档?GridControl如何实现分页?

如何在GridControl中显示图片列?控件DevExpress.XtraGrid.GridControl中显示图片列。

如何给DevExpress中的GridControl添加列

DevExpress GridControl小结