zoukankan      html  css  js  c++  java
  • Devexpress控件使用一:GridControl

    1、控件及列表展示

    1)、控件

    2)、构建表格,用于列表展示

    3)、gridControl绑定数据

    4)、调用绑定:BindDataSource(InitDt());

    5)、展示列表

    2、表格的列配置

     1)、点击 Run Resigner弹出设计界面

    2)、配置后的效果

     

      

    3、列数据的格式设置

    1)、数据

    2)、时间

     

    3)、自定义

    效果

    注:数据公式查找

     

     4、gridControl属性

    Dock:none  和   Anchor:Top, Bottom, Left, Right      设置随窗体宽高变化而变化

    gridView1.IndicatorWidth = 40; //自增列宽度
    gridView1.OptionsView.ColumnAutoWidth = false; //自动调整列宽,使所有列的宽度和视图的宽度匹配
    gridView1.OptionsCustomization.AllowSort = false;//禁止用户对数据进行排序操作
    gridView1.OptionsCustomization.AllowColumnResizing = false; //禁止各列头改变列宽
    gridView1.OptionsCustomization.AllowColumnMoving = false;//各列头禁止移动
    gridView1.VertScrollVisibility = ScrollVisibility.Auto; //显示垂直滚动条
    gridView1.HorzScrollVisibility = ScrollVisibility.Auto; //显示水平滚动条
    gridView1.OptionsMenu.EnableColumnMenu = false; //禁止列头上的菜单
    gridView1.OptionsMenu.EnableFooterMenu = false; //禁止页脚上的菜单
    gridView1.OptionsMenu.EnableGroupPanelMenu = false; //禁止分组面板上的菜单
    gridView1.OptionsNavigation.UseTabKey = false; //不使用TAB/SHIFT+TAB移动焦点
    gridView1.OptionsBehavior.Editable = false;//不允许编辑
    gridView1.OptionsBehavior.ReadOnly = true;//只读

    5、属性设置

    1)、 

    //如何解决单击记录整行选中的问题
    View->OptionsBehavior->EditorShowMode 设置为:Click

    2)、 

    //焦点单元格的列
    gridview1.FocusedColumn
    
    //焦点单元格所在行的行号
    gridview1.FocusedRowHandle
    
    //焦点单元格的值
    gridview1.FocusedValue

    3)、

    //如何解决 GridControl 记录能获取而没有显示出来的问题
    gridView.populateColumns();

    4)、

    //如何让行只能选择而不能编辑(或编辑某一单元格)
    View->OptionsBehavior->EditorShowMode 设置为:Click
    View->OptionsBehavior->Editable 设置为:false

    5)、

    //如何禁用 GridControl 中单击列弹出右键菜单
    Run Design->OptionsMenu->EnableColumnMenu 设置为:false

    6)、

    //如何隐藏 GridControl 的 GroupPanel 表头
     Run Design->OptionsView->ShowGroupPanel 设置为:false

    7)、

    //如何禁用 GridControl 中列头的过滤器:     
    Run Design->OptionsCustomization->AllowFilter 设置为:false

    8)、

    //多选
    GridControl->GridView->属性->OptinosSelecttion->MultiSelect

    9)、

    //在gridcontrol中添加checkbox复选框
    gridview->run designer->columns->选择要变成复选框的那一列->column edit->new(在这里可以选择很多类型)

     

    10)、

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

    11)、

    //设置成一次选择一行,并且不能被编辑
    this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
    this.gridView1.OptionsBehavior.Editable = false;
    this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;

    12)、

    //设置行号宽
    gridView1.IndicatorWidth = 30;

    13)、

    //设置列表数据居中
    gridview->run designer->columns->选择列->AppearanceCell和AppearanceHeader ->TextOptions->HAlignment属性设置为Center

    6、分组排列汇总

    分组

    1)按时间分第一组

    2)按性别分第二组

     

    效果

    3)高级设置

    将所有组展开:gridView1.ExpandAllGroups();

     4)、结果:

    5)、自定义组名   gridView1_CustomDrawGroupRow

    结果:

    注意:每一行都有一个 RowHandle属性,普通行的RowHandle从0开始

     排列设置

    汇总

    注:汇总结果显示在Footer面板中,gridControl的Footer面包默认不显示

     

    结果:

     7、行备注和行号

    备注

    1)、备注显示设置

    2)、设置备注字段

    结果

    3)使用电脑键盘控制显示与隐藏

    a、设置Form窗体的KeyPreview属性为true

    b、注册窗体的KeyUp事件

    private void Form2_KeyUp_1(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.F3)
    {
    gridView1.OptionsView.ShowPreview = !gridView1.OptionsView.ShowPreview;
    }
    }

     行号

    gridView1_CustomDrawRowIndicator事件

    行号宽:gridView1.IndicatorWidth = 30;

    private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
    {
        if (e.Info.IsRowIndicator)
        {
           e.Info.DisplayText = e.RowHandle.ToString();
        }
    }

    结果

    8、设置字体颜色

    private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) 
    { 
                if (e.Column.FieldName == "TestResult")//设字体颜色
                {
                    Result tr = Result.Running;switch (tr)
                    {
                        case Result.Success:
                            e.Appearance.ForeColor = Color.Black;
                            break;
    
                        default:
                            e.Appearance.ForeColor = Color.Black;
                            break;
                    }
                }
    } 

    9、右键菜单

    1.在VS工具箱中的“菜单和工具栏”找到ContextMenuStrip控件,双击添加。
    2.点击ContextMenuStrip右上方的小三角形,打开编辑项,可以添加菜单项。至于菜单点击事件,这里就不多说了。
    3.选择gridControl(注意这里不是gridView的属性),在属性中可以找到ContextMenuStrip属性,设置成刚添加的ContextMenuStrip。
    4.是否可用设置
      

    问题:在单选时,“打开”(itemOpen)、“删除”(itemDelete)菜单项都可用,多选时“打开”不可用,“删除”可用,没有选择时“打开”、“删除”都不可用。

    这里需要用到gridView的PopupMenuShowing这个事件。也就是在菜单出现之前用户点击右键之后,来判断一下选择了几行,从而决定菜单项是否可用。


    private void gridView_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e)
    {
       //获取选择的行数
       int select = gridView.SelectedRowsCount;
       itemOpen.Enabled = false;
       itemDelete.Enabled = false;
       if(select == 1)
       {
         itemOpen.Enabled = true;
         itemDelete.Enabled = true;
       }
       else if(select > 1)
       {
         itemDelete.Enabled =true;
       }
    }

    样式设置

    全部设置

    新增一条记录

    (1)、

    private void btn_add_Click(object sender, EventArgs e)
    {
       gridView1.AddNewRow();   
    }

    (2)、实现 gridView_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])); //复制最后一行的数据到新行
     }

    自定义列显示事件

  • 相关阅读:
    忘记线上MySQL密码:
    Auth认证
    swoole定时
    hashMap,hashTable,concurrentHashmap的区别
    JSP中URL路径获取问题
    #Spring代理的简单例子#
    #动态代理#
    #类加载机制#
    #算法#二分查找和插入(start end交叉的地方)
    #tomcat#生成的jsp转换问题
  • 原文地址:https://www.cnblogs.com/1955/p/9441679.html
Copyright © 2011-2022 走看看