zoukankan      html  css  js  c++  java
  • Devexpress datagrid动态添加显示指定列的gridView

     代码如下:

      public class DXGridControlHelper
        {
            /// <summary>
            /// 获取显示指定列的GridView
            /// </summary>
            /// <param name="grid"></param>
            /// <param name="columns">列集合</param>
            /// <returns></returns>
            public static DevExpress.XtraGrid.Views.Grid.GridView GetColumnsView(DevExpress.XtraGrid.GridControl grid,
              List<GridColumnModel> columns)
            {
                DevExpress.XtraGrid.Views.Grid.GridView view = new DevExpress.XtraGrid.Views.Grid.GridView(grid);
    
                foreach (GridColumnModel item in columns)
                {
                    DevExpress.XtraGrid.Columns.GridColumn column = new DevExpress.XtraGrid.Columns.GridColumn();
                    column.FieldName = item.DataColumnName;
                    column.Name = item.ColumnName;
                    column.Caption = item.ColumnTitle;
                    column.Visible = item.Visible;
                    view.Columns.Add(column);
                }
               //下面指定分组,-1 为不分组 0,1,2....为分组顺序 (add的时候指定groupindex 无效,可能为列未在视图中初始化)
                for (int i = 0; i < columns.Count; i++)
                {
                    view.Columns[i].GroupIndex =columns[i].GroupIndex;
                }
                return view;
            }
           ///<summary>
            ///  设置按钮列
            /// </summary>
            /// <param name="dataColumnName">数据字段名</param>
            /// <param name="dataColumnName">数据字段名</param>
            /// <param name="btnText">按钮文本</param>
            /// <param name="skinName">按钮皮肤名</param>
            /// <param name="image">按钮图片</param>
            /// <param name="location">图片位置</param>
            /// <param name="clickFunction">按钮Handler</param>
            /// <param name="view">basevew</param>
            /// <param name="viewType">viewtype</param>
            public static void SetButtonColumn(
                                string dataColumnName, string btnText, string skinName, System.Drawing.Image image,
                DevExpress.XtraEditors.ImageLocation location,
                                DevExpress.XtraEditors.Controls.ButtonPressedEventHandler clickFunction, DevExpress.XtraGrid.Views.Base.BaseView view, ViewType viewType)
            {
                RepositoryItemButtonEdit rib = new RepositoryItemButtonEdit();
    
                rib.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
                rib.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
                rib.ButtonClick += clickFunction;
                rib.Buttons[0].Caption = btnText; 
    
                if(skinName!="")
                rib.LookAndFeel.SkinName = skinName;
    
                rib.LookAndFeel.UseDefaultLookAndFeel = false;
    
                if (image != null)
                {
                    rib.Buttons[0].Image = image;
                    rib.Buttons[0].ImageLocation = location;
                }
    
                rib.Buttons[0].Visible = true;
    
                switch (viewType)
                {
                    case ViewType.GridView:
                        (view as DevExpress.XtraGrid.Views.Grid.GridView).Columns[dataColumnName].ColumnEdit = rib;
                        break;
                    case ViewType.BandView:
                        (view as DevExpress.XtraGrid.Views.BandedGrid.BandedGridView).Columns[dataColumnName].ColumnEdit = rib;
                        break;
                    default:
                        break;
                }
            }
        }
    
        public enum ViewType
        { 
            GridView,
            BandView
        }
    
    
    
    
        }
    
        /// <summary>
        /// 动态创建gridView视图,列的Model
        /// </summary>
        public class GridColumnModel
        {
            /// <summary>
            /// 列表头文本
            /// </summary>
            public string ColumnTitle { get; set; }
    
            /// <summary>
            /// 列唯一标识 name,默认为(column_sql语句中的字段名(小写))  
            /// column_sqlcolumnname
            /// </summary>
            private string _columnName;
            public string ColumnName
            {
                get
                {
                    if (string.IsNullOrEmpty(_columnName))
                        return "column_" + DataColumnName.ToLower();
                    return _columnName;
                }
                set { _columnName = value; }
            }
    
            /// <summary>
            /// sql 语句中的字段名称
            /// </summary>
            public string DataColumnName { get; set; }
    
            /// <summary>
            /// 可见性,默认true
            /// </summary>
            private bool? _visible;
    
            public bool Visible
            {
                get
                {
                    if (_visible == null)
                        return true;
                    return bool.Parse(_visible.ToString());
                }
                set
                {
                    _visible = value;
                }
            }
    
            /// <summary>
            /// 分组,默认-1
            /// </summary>
            private int? _groupIndex;
            public int GroupIndex
            {
                get
                {
                    if (_groupIndex == null)
                    {
                        _groupIndex = -1;
                    }
                    return int.Parse(_groupIndex.ToString());
                }
                set
                {
                    _groupIndex = value;
                }
            }
    
        }

         使用该代码 方法:

            说明:动态制定的列 要与数据源中的列字段名(sql语句中的字段名) 一致

                

     var view2 = DXGridControlHelper.GetColumnsView(gridControl1, new List<ColumnModel>() { 
                            new ColumnModel(){ColumnTitle="ID",DataColumnName="Id"},//默认该列为显示,列名为column_id
                            new ColumnModel(){ColumnTitle="课件名称",GroupIndex=0,DataColumnName="Name"},//按照该列分组
                            new ColumnModel(){ColumnTitle="描述",DataColumnName="Description"},
                            new ColumnModel(){ColumnTitle="归属",DataColumnName="Objective"},
                            new ColumnModel(){ColumnTitle="图片",ColumnName="img",DataColumnName="ImgGif",Visible=false}
                        }); 
                      DataTable tab = cl.GetDataTable("select * from table_name");         
                       gridControl1.MainView = view2;
                       gridControl1.DataSource = tab;

        end;

  • 相关阅读:
    用Intellij idea创建Maven项目JDK8源码阅读环境问题整理
    咱的Maven项目能用Junit5吗?
    43- 8 mvc知识点
    42-7 linq
    (Ant编程) Iqueryable 类型介绍
    Iqueryable 类型中 的 使用lambda 注意的坑。 (linq to sql)
    (Ant编程) Linq 的select 方法
    Scala模式匹配
    scala正则表达式
    P4336 [SHOI2016]黑暗前的幻想乡
  • 原文地址:https://www.cnblogs.com/zhiyin/p/3956479.html
Copyright © 2011-2022 走看看