一般属性设置

  • 不显示分组框: Gridview->Option View->Show Group Panel=false
  • 单元格不可编辑: gridcontrol -->gridview -->OptionsBehavior -->Editable=false
  • 禁用过滤器: Run Design->OptionsCustomization->AllowFilter=false
  • 禁用右键菜单: Run Design->OptionsMenu->EnableColumnMenu=false
  • 列的宽度自动调整: gridView1.OptionsView.ColumnAutoWidth=true
  • 禁止排序: gridView1.OptionsCustomization.AllowSort = false;
  • 列头禁止移动: gridView1.OptionsCustomization.AllowColumnMoving = false;
  • 每次选择一行: this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
  • 记录定位: this.gridView.MoveNext() this.gridView.MoveLast() this.gridView.MoveFirst()
  • 显示水平滚动条: this.gridView.OptionsView.ColumnAutoWidth = false;
  • 冻结列: physicColumn.Fixed = FixedStyle.Left;
  • 基本的绑定
    gridControl1.DataSource=dt;
    在对应的Grid中添加列,设置其中的Data(Category)
  • 根据数据源自动产生列
    gridView2.PopulateColumns();

添加底部统计行

实现如下图所示中的统计功能:

  1. 设置显示Footer: OptionsView > ShowFooter
  2. 设置GridView中的 Summary 字段或者手动设置统计列: gridView1.Columns["Quantity"].Summary.Add(DevExpress.Data.SummaryItemType.Average, "Quantity", "Avg={0:n2}");

自定义绑定

很多时候,我们并不是对所有的行进行统计,可能我们是通过一些特定的条件进行统计,那么可以进行统计行的自定义绑定,步骤如下:

  1. 设置统计类型为 Custom
  2. 处理事件: GridView.CustomSummaryCalculate
  3. 辨别是哪个统计项的方法
    • e.Item是 GridSummaryItem ,可以利用Item中的 Tag 字段
  4. 注意使用 e.SummaryProcess == CustomSummaryProcess.Calculate
  5. 可以在 e.SummaryProcess == CustomSummaryProcess.Finalize 中直接给统计项赋值。
private void gridView2_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
        e.TotalValue = 100;
  • this.gridView2.IndicatorWidth = 30;//设置显示行号的列宽
  • 在事件中实现:
private void gridView2_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
    if (e.Info.IsRowIndicator && e.RowHandle >= 0)
        e.Info.DisplayText = (e.RowHandle + 1).ToString();

分组名称自定义

GridControl控件分组时,分组的名称仅仅是当前分组的字段名称,如果我们想按下图一样自定义分组,要怎么做呢?

  • 自定义方法
    1. 使用分组行绘制事件
    private void gridView1_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
        var info = (GridGroupRowInfo)e.Info;
        var count=info.View.GetChildRowCount(e.RowHandle);
        info.GroupText = string.Format("{0},票数:{1}", info.GroupText, count);
      
    1. 使用CustomColumnDisplayText事件
    private void gridView_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) {
        if (e.Column.FieldName == "Order Sum" && e.IsForGroupRow) {
            double rowValue = Convert.ToDouble(gridView.GetGroupRowValue(e.GroupRowHandle, e.Column));
            double val = Math.Floor(rowValue / 100);
            string groupRowInterval = string.Format("{0:c} - {1:c} ", val * 100, (val + 1) * 100);
            if (val > 14)
                groupRowInterval = string.Format(">= {0:c} ", val * 100);
            e.DisplayText = "Order Sum: " + groupRowInterval;
      
    1. 使用GroupFormat属性
    2. 使用分组统计项(推荐)
    gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "Name", null, "({0}票)");
    gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "Volume", null, "({0}CMB)");
  • 自定义属性
    1. 获取分组计数:GridView.GetChildRowCount

奇偶行颜色设置

  • OptionsView.EnableAppearanceEvenRow = trueOptionsView.EnableAppearanceOddRow = true;
  • 设置Appearance.EvenRow.BackColorAppearance.OddRow.BackColor

设置某个单元格的颜色

  • 通过在Appearence中添加FormatCondition,设置应用与整行,还是单一个单元格
  • 使用事件gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) 判断
    cs if (e.Column.FieldName == "F_State") { if (e.CellValue.ToString().Equals("False")) { e.Appearance.ForeColor=Color.Red; e.Appearance.DrawString(e.Cache,e.DisplayText,r); e.Handled = true; } }

重置文字的显示

比如数值为0时显示为空白

  • 使用CustomColumnDisplayText事件

    private void gridView1_CustomColumnDisplayText(object sender,CustomColumnDisplayTextEventArgs e) {
       if(e.Column.FieldName == "Discount")
          if(Convert.ToDecimal(e.Value) == 0) e.DisplayText = "";
    

    设置为超链接单元格并处理事件

    很多时候,我们点击某个单元格会触发一些事件,比如弹出对话框,显示详情或者其他一些重要的信息,这个时候,如果能够像html一样,显示个超链接的形式,会比较人性化,使用者一看就知道这个单元格是可以点击的,比如下面这种格式:

    1. 新建DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit
    2. 把上述Item赋值到Column的ColumnEdit属性
    3. 获取点击的单元格,则处理事件gridView2_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)。该事件如果单元格处于编辑状态,则右键触发,否则左键触发

    上述方法的弊端为:点击整个单元格,会触发事件,跟点击单元格中的链接才会触发事件相差甚大,可惜GridControl中没有GridView控件中的CellContentClick事件,所以只能采用折中的方法。

    • 选择某行触发:gridView2.RowClick += new DevExpress.XtraGrid.Views.Grid.RowClickEventHandler(gridView2_RowClick);
    • 选择某行后获取当前表格数据:this.textBox1.Text = gridView2.GetDataRow(e.RowHandle)["列名"].ToString();
    一般属性设置不显示分组框:Gridview->Option View->Show Group Panel=false 单元格不可编辑:gridcontrol -->gridview -->OptionsBehavior -->Editable=false 禁用过滤器:Run Design->OptionsCustomization->AllowFi...
    1、gridControl如何去掉主面板? 鼠标右键Run Designer=》OptionsView =》 ShowGroupPanel=False; 2、gridControl如何设置列自动宽度? 鼠标右键Run Designer=》OptionsView=》ColumnAutoWidth=True; 3、gridControl如何设置单元格不可编辑? 鼠标右键Run Designe
    首先介绍一下XtraGrid,XtraGrid有两个关键类:GridControlGridView。GridControl本身不显示数据,数据都是显示在GridView/CardView/XXXXView中。GridControl是各种View的容器。所以要控制显示,要从GridView这些类入手。 先来一些教程: 1、DevExpress使用教程:XtraGrid常见用法,主要介绍了XtraGrid的数据绑定与数据分析功能,如统计、排序、分页等。 2、DevExpress使用教程:Gridview下拉框
    针对DevExpress GridControl GridView 新增行AddNewRow() 很多人加了代码也无法实现添加行或者添加行后InitNewRow这个事件没有触发, 其中主要原因见附件实例代码!
    string customSum = ""; private void bandedGridView1_CustomSummaryCalculate ( object sender ,DevExpress.Data.CustomSummaryEventArgs e ) int summaryId = Convert.ToInt32( (
    //索引为1的列 gridView4.Columns[1].SummaryItem.DisplayFormat = "{0:0.##}"; gridView4.Columns[1].SummaryItem.FieldName = "TotalMoney"; gridView...
    简介随着微信的普及,小视频的流行,我们设计一款基于微信小程序端的视频社交软件 + 后台管理系统作为自己专科毕业设计----秀视频-微信小程序端(短视频社交小程序,用户可以在小程序上发布自己的短视频 并且经过我们的平台加入滤镜或者背景音乐制作出独具特色的短视频。并实现了点赞、评论、下载、分享、转发等功能的小程序)---的后台管理系统,主要实现了人员的管理,短视频的管理,背景音乐的管理,登陆注册,权限验证,单点登陆等等。 从需求分析,功能设计,前端到后台,再到数据库的设计。一点点的积累,一点点的完善,预计小程序端+后台管理系统开发周期一个月(每天更新)。 对一个开发人员来说,如果想单纯的做出这些功能,其实并不难。 难的是对于这些功能细节的把控,项目整体的友好程度,用户的体验效果;对并发的考虑,对恶意请求,对流畅度这些细节的考虑等等。
    当使用DevExpressGridControl控件绑定动态数据时,如果数据列的顺序发生了改变,可能会导致列排序出现问题。为了解决这个问题,可以使用以下方法: 1.在数据源发生变化时,先将GridControl控件的Columns.Clear()方法执行一次,清空所有列。 2.然后,按照新的列顺序,依次添加列。这里需要注意的是,在添加列时,需要指定列的FieldName属性为对应的数据字段名。 3.最后,重新绑定数据源即可。这样,就可以确保列的顺序和数据的顺序一致,从而避免列排序问题。 示例代码如下: //清空列 gridControl1.Columns.Clear(); //添加列 gridView1.Columns.AddVisible("ID", "编号").FieldName = "ID"; gridView1.Columns.AddVisible("Name", "名称").FieldName = "Name"; gridView1.Columns.AddVisible("Age", "年龄").FieldName = "Age"; //重新绑定数据源 gridControl1.DataSource = dataTable;