zoukankan      html  css  js  c++  java
  • DevExpress GridControl使用片段

    
    以下代码已经有好多人写过,还望各位多多指教
    
    我只不过是整理了一下在我使用过程中的比较熟悉的,在以后的使用过程中会继续添加
    
    1.gridView 奇行与偶行交替变色
    
    this.gridView1.OptionsView.EnableAppearanceEvenRow = true;
    this.gridView1.OptionsView.EnableAppearanceOddRow = true;
    
    this.gridView1.Appearance.EvenRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
    this.gridView1.Appearance.EvenRow.Options.UseBackColor = true;
    this.gridView1.Appearance.OddRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
    this.gridView1.Appearance.OddRow.Options.UseBackColor = true;
    2.girdView在第一列显示行号
    
    //调整第一列的宽度
    this.gridView1.IndicatorWidth = 40;
    //添加监听事件
    this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(this.gridView1_CustomDrawRowIndicator);
    //在非类里这段代码
    private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
            ...{
                if (e.Info.IsRowIndicator && e.RowHandle >= 0)
                ...{
                    e.Info.DisplayText = Convert.ToString(Convert.ToInt32(e.RowHandle.ToString())+1);
                }
            }
    3.
    
    GridControl 選中某列進行排序時,怎麼能讓那列高亮顯示 
    winform:
    
    
    在gridView1的"EndSorting"事件中加入以下代碼:
    
    
    private void gridView1_EndSorting(object sender, EventArgs e)
            ...{
                Color clr = gridView1.Appearance.Row.BackColor;
                foreach (DevExpress.XtraGrid.Columns.GridColumn dc in gridView1.Columns)
                ...{
                    if (dc.VisibleIndex == gridView1.SortedColumns[0].VisibleIndex)
                    ...{
                        dc.AppearanceCell.BackColor = Color.Red;
                    }
                    else
                    ...{
                        dc.AppearanceCell.BackColor = clr;
                    }
               }
           }
    webfrom:
    
    在DataGrid的SortCommand事件加入以下代碼:
    其中dg是DataGrid的實例,e是SortCommand事件傳入的DataGridSortCommandEventArgs類型參數
    
    foreach(DataGridColumn dgc in dg.Columns)
    ...{
     if (dgc.SortExpression == e.SortExpression)
     ...{
      dgc.ItemStyle.BackColor = Color.Red;
     }
     else
     ...{
      dgc.ItemStyle.BackColor = Color.White;
     }
    }
    4.
    
    去掉GridControl控件上面的
    Drag a column header here to group by that column
     
    Options\OptionsView\ShowGroupPanel      True----->False
    
    
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hlzhs/archive/2008/05/19/2459118.aspx
    
    public Form2()
            {
                InitializeComponent(); 
    
                //不显示内置的导航条。
                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;
    
    
  • 相关阅读:
    mongodb修改和删除操作
    mongodb常用查询语句
    ejs常用功能函数
    Rails + React +antd + Redux环境搭建
    nodejs安装和卸载
    Git 建立仓库及常用命令速查表
    使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能
    gem devise配置
    Ubuntu16.04安装postgresql9.4及pgadmin3图形管理界面
    Rails Migration Data Model栏位修改及数据类型介绍
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2037024.html
Copyright © 2011-2022 走看看